1、二级 C+笔试-282 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列关于构造函数的描述中,错误的是(分数:2.00)A.构造函数可以设置默认参数B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数D.构造函数不可以重载2.若类 A 和类 B 的定义如下:class Aint i,j;public:int geti()return i;class B: public Aint k;public:void make()k=i*j;则上述定义中非法的语句是(分数:2.00)A.k=i*j;B.int k;C.return i;D.
2、void make()3.有以下程序#include iostreamusing namespace std;class Rpublic:R(int r1,int r2)R1=r1;R2=r2;void print();void print()const;private:iht R1,R2;void R:print()coutR1 “,“R2endl;void R:print() constcoutR1 “,“R2endl;int main()R a(5,4);const R b(20,52);b.print();return 0;执行后的输出结果是(分数:2.00)A.5,4B.20,52c
3、) 0,0D) 4,54.在面向对象的程序设计中,下列叙述中错误的是(分数:2.00)A.任何一个对象构成一个独立的模块B.一个对象不是独立存在的实体,各个对象之间有关联,相互依赖C.下一层次的对象可以继承上一层次对象的某些属性D.上述三种说法都正确5.在 C+语言中函数返回值的类型是由( )决定的。(分数:2.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型D.调用该函数时的主调函数类型6.执行语句: coutsetfill(*)setw(10)setfill(#)left123 “OK“end1;后将输出(分数:2.00)A.123*OKB
4、.123#OKC.123*OK*D.123#OK#7.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(分数:2.00)A.概要设计B.详细设计C.可行性分析D.需求分析8.下列关于队列的叙述中正确的是(分数:2.00)A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表9.有以下程序:#include iostreamusing namespace std;class sampleprivate:iht n;public:sample()sample(int m)n=m;void addvalue(int m)samp
5、le s;s.n=n+m;*this=s;void disp()cout“n=“nend1;int main()sample s(10);s.addvalue(5);s.disp();return 0;程序运行后的输出结果是(分数:2.00)A.n=10B.n=5C.n=15D.n=2010.下面有关重载函数的描述中正确的是(分数:2.00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须具有不同的形参列表D.重载函数名可以不同11.下列叙述中正确的是(分数:2.00)A.在模块化程序设计中,一个模块应尽量多的包括与其他模块联系的信息B.在自顶向下、逐步细化的设
6、计过程中,首先应设计解决问题的每一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法12.对于语句 cin x;中的各个组成部分,下列叙述中错误的是(分数:2.00)A.“cin” 是一个输出流对象B.“;”的作用是表示语句结束C.“x”是一个变量D.“” 称作提取运算符13.定义如下枚举类型; enum Monday, Tuesday, Wednesday, Thrusday, Friday=2;则下列语句正确的是(分数:2.00)A.表达式 Wednesday = Friday 的值是 trueB.
7、Day day; day=3;C.Day day; day = Monday + 3;D.Day day; day = Tuesday + 10;14.有以下程序:#include iostreamusing namespace std;class Apublic:A(int i,int j)a=i;b=j;void move(int x,int y)a+=x;b+=y;void show()couta“,“bend1;private:int a,b;class B: private Apublic:B(int i,int j): A(i,j) void fun()move(3,5); voi
8、d fl ()A:show();int main()B d(3,4);d.fun();d.f1();return 0;程序执行后的输出结果是(分数:2.00)A.3,4B.6,8C.6,9D.4,315.如果表达式-x/y 中的“-”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为(分数:2.00)A.operator/(x.operator-(),y);B.operator/(operator-(x),y);C.operator-().operator/(y);D.operator/(operator-(x);16.在深度为 5 的满二叉树中,叶子结点的个数为(
9、分数:2.00)A.31B.32C.16D.1517.有以下程序:#include iostreamusing namespace std;#define PI 3.14class Pointprivate:int x,y;public:Point(int a,int b)x=a;y=b;int getx()return x;int gety()return y;class Circle: public Pointprivate:int r;public:Circle(int a, int b,int c):Point(a,b)r=c;int getr()return r;double are
10、a()return PI*r*r;, int main()Circle c1(5,7,10);coutc1 .area()endl;return0;程序执行后的输出结果是(分数:2.00)A.314B.157C.78.5D.153.8618.关于类和对象描述错误的是(分数:2.00)A.对象(Object)是现实世界中的客观事物,对象具有确定的属性B.类是具有相同属性和行为的一组对象的集合C.对象是类的抽象,类是对象的实例D.类是对象的抽象,对象是类的实例19.下列叙述中正确的是(分数:2.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效
11、率只取决于所处理的数据量D.以上三种说法都不对20.下列语句段将输出字符*的个数为int i=100;while(1)i-;;if(i=0)break;cout*;(分数:2.00)A.98 个B.99 个C.100 个D.101 个21.在关系数据库中,用来表示实体之间联系的是(分数:2.00)A.树结构B.网结构C.线性表D.二维表22.下列对模板的声明中正确的是(分数:2.00)A.templateTB.templateclass T1,T2C.templateclass T1,class T2D.templateclass T1 ;class T223.下面类的定义,有( )处错误。c
12、lass MyClasspublic:void MyClass();MyClass(int Value);private:int i=0;(分数:2.00)A.1B.2C.3D.424.有以下程序:#include iostreamusing namespace std;class Aprivate:iht a;public:A(int i)a=i;void disp()couta“,“;class Bprivate:int b;public: B(int j)b-j;void disp()coutb“,“;class C: public B,public Aprivate:int c;pub
13、lic:C(int k):A(k-2),B(k+2)c=k;void disp()A:disp();B:disp();coutcendl;,int main()C obj(l0);obj.disp();return 0;程序执行后的输出结果是(分数:2.00)A.10,10,10B.10,12,14C.8,10,12D.8,12,1025.有如下函数模板的定义: template class TT func(Tx,Ty) return x*x+y*y;(分数:2.00)A.func(3,5);B.func(3,5);C.func(3,5.5);D.funcint (3,5.5);26.以下选项
14、中合法的用户标识符是(分数:2.00)A.longB._2TestC.3DmaxD.dat27.算法的空间复杂度是指(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间28.将 E-R 图转换到关系模式时,实体与联系都可以表示成(分数:2.00)A.属性B.关系C.键D.域29.有如下程序:#include iostreamusing namespace std;int s=0;class samplestatic int n;public:sample(int i)n=i;static void add()s+=n;iht
15、sample:s=0;iht main()sample a(2),b(5);sample:add();coutsend1;return 0;程序运行后的输出结果是(分数:2.00)A.2B.5C.7D.330.重载输入流运算符必须使用的原型为(分数:2.00)A.ostreamB.char a = H,e,l,l,o;C.char a5 = “Hello“;D.char a2 5 = “Hello“,“World“ ;33.软件需求分析阶段的工作,可以分为四个方面:需求获取,需求分析,编写需求规格说明书,以及(分数:2.00)A.阶段性报告B.需求评审C.总结D.都不正确34.函数定义为 Fu
16、n(int B.Fun(20+n);C.Fun(n);D.Fun(35.下面关于虚函数的描述中正确的是(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型二、填空题(总题数:15,分数:30.00)36.设一棵完全二叉树共有 700 个结点,则在该二叉树中有 【1】 个叶子结点。(分数:2.00)填空项 1:_37.在面向对象方法中,类之间共享属性和操作的机制称为 【2】 。(分数:2.00)填空项 1:_38.在结构化分析方法中,用于描述系统中所用到的全部
17、数据和文件的文档称为 【3】 。(分数:2.00)填空项 1:_39.在数据库的概念结构设计中,常用的描述工具是 【4】 。(分数:2.00)填空项 1:_40.数据库系统中实现各种数据管理功能的核心软件称为 【5】 。(分数:2.00)填空项 1:_41.求 1100 的和,可写成 for(s=0,i=1; 【6】 ;i+) s+=i;的形式。(分数:2.00)填空项 1:_42.假定用户没有给一个名为 MyClass 的类定义析构函数,则系统为其定义的默认析构函数首部形式为上 【7】 。(分数:2.00)填空项 1:_43.下面程序的输出结果是 【8】 。#include iostream
18、using namespace std;int x;void funA(intvoid funB(int,intint main()int first;int second=5;x=6;funA(first,second);funB(first,second);coutfirst“ “second“ “xendl;return 0;void funA(int first=a+b;a=2*b;b=first+4;void funB(int u,int second=x;v=second+4;x=u+v;(分数:2.00)填空项 1:_44.下面程序的运行结果是 【9】 。#include ios
19、treamusing namespace std;class countstatic int n;public:count()n+;static int test()for(int i=0;i4;i+)n+;return n;int count:n = O;int main()coutcount: test()“ “;count c1, c2;coutcount: test()endl;return 0;(分数:2.00)填空项 1:_45.以下程序运行后的输出结果是 【10】 。#include iostream#include stringusing namespace std;class
20、 Y;class Xiht x;char *strx;public:X(int a,char *str)x=a;strx=new charstrlen(str)+1;strcpy(strx,str);void show(Y ;class Yprivate:iht y;char *stry;public:Y(int b,char *str)y=b;stry=new charstrlen(str)+ 1 ;strcpy(stry, str);friend void X:show(Y ;void X:show(Y coutob.stryendl;int main()X a(10,“stringX“)
21、;Y b(20,“stringY“);a.show(b);return 0;(分数:2.00)填空项 1:_46.在下面横线上填上适当的语句,完成程序。#include iostreamusing namespace std;class Baseint x;public:Base(int i) x=i;Base();class Derived: public Basepublic:_完成类 Derive 构造函数的定义;int main()Derived Obj;return 0;在横线处应填入的语句是 【11】 。(分数:2.00)填空项 1:_47.虚函数必须是类的 【12】 。(分数:2
22、.00)填空项 1:_48. 【13】 允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。(分数:2.00)填空项 1:_49.有以下程序:#include iostreamusing namespace std;class Basepublic:Base()x=0;int x; ;class Derivedl: virtual public Basepublic:Derived1()x=10;class Derived2: virtual public Basepublic:Derived2()x=20;class Derived: public Deriv
23、ed1,protected Derived2;int main()Derived obj;coutobj.xendl;return 0;该程序运行后的输出结果是 【14】 。(分数:2.00)填空项 1:_50.下面是复数类 complex 的定义,其中作为友元函数重载的运算符“-”的功能是将参数对象的实部减1,然后返回对该对象的引用;请补充完整。class complex private:int real;iht imag;public:complex(int r=0,int i=0):real(r),imag(i) void show()coutreal(imag0?“-“ :“+“)im
24、agi;【15】 ;complexreturn c;(分数:2.00)填空项 1:_二级 C+笔试-282 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列关于构造函数的描述中,错误的是(分数:2.00)A.构造函数可以设置默认参数B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数D.构造函数不可以重载 解析:解析 构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。C+在创建一个对象时,会自动调用类的构造函数,在构造函数中可以执行初始化成员变量的操作。构造函数可以是内联函数,也可以重载。2.若类 A 和类 B 的定义如
25、下:class Aint i,j;public:int geti()return i;class B: public Aint k;public:void make()k=i*j;则上述定义中非法的语句是(分数:2.00)A.k=i*j; B.int k;C.return i;D.void make()解析:解析 本题考核派生类的定义和访问权限。变量 i 和 j 都是基类 A 的私有变量,它们是隐蔽的,在派生类中不能直接访问。3.有以下程序#include iostreamusing namespace std;class Rpublic:R(int r1,int r2)R1=r1;R2=r2
26、;void print();void print()const;private:iht R1,R2;void R:print()coutR1 “,“R2endl;void R:print() constcoutR1 “,“R2endl;int main()R a(5,4);const R b(20,52);b.print();return 0;执行后的输出结果是(分数:2.00)A.5,4B.20,52c) 0,0D) 4,5 解析:解析 使用 const 关键字修饰的对象成为常对象,题中对象 b 被声明为类 R 的常对象。使用const 关键字说明的成员函数称为常成员函数,类 R 中用 co
27、nst 重载了函数 print()。在使用常对象和常成员函数时应注意的是:const 是函数类型的一个组成部分,因此在常成员函数部分也要带 const 关键字:常成员函数不能更新对象的数据成员,也不能调用该类中没有用 const 修饰的成员函数:如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数;const 关键字可以参与区分重载函数。本题中,b 为类 R 的常对象,通过 b 只能调用类 R 的常成员函数 print()输出20,52。4.在面向对象的程序设计中,下列叙述中错误的是(分数:2.00)A.任何一个对象构成一个独立的模块B.一个对象不是独立存在
28、的实体,各个对象之间有关联,相互依赖 C.下一层次的对象可以继承上一层次对象的某些属性D.上述三种说法都正确解析:解析 在面向对象的程序设计中,一个对象是一个可以独立存在的实体。各个对象之间相对独立,相互依赖性小。所以,选项 B 错误,应为所选。5.在 C+语言中函数返回值的类型是由( )决定的。(分数:2.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型 D.调用该函数时的主调函数类型解析:解析 本题考查对函数定义的掌握程度。函数类型决定了函数返回值的类型。函数值返回类型可以由编译器自动完成类型转换。在函数有返回值的调用中,编译器将 retu
29、rn 后面的表达式的类型强制转换为该函数定义时指定的返回值类型。6.执行语句: coutsetfill(*)setw(10)setfill(#)left123 “OK“end1;后将输出(分数:2.00)A.123*OKB.123#OK C.123*OK*D.123#OK#解析:解析 本题考核格式控制数据的输入输出。函数 setfill(char c)用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满,设置的填充符一直有效,直到再次设置填充字符为止,如题中调用函数 setfill(*)将填充字符设置为*,后又调用函数 setfill(#)将填充字符设置为#。
30、函数 setw(int n)用于设置输入输出宽度,宽度设置的效果只对一次输入或输出有效,在完成一次数据的输出或输入后,宽度设置自动恢复为 0,如题中语句以宽度 10 输出数据“123”后,字符串“OK”的输出宽度就自动恢复为 0 了。而且题中输出的对齐方式为在输出宽度内左对齐。所以最终的输出为 123#OK。7.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(分数:2.00)A.概要设计B.详细设计C.可行性分析D.需求分析 解析:解析 在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什
31、么的问题。本题的正确答案为 D。8.下列关于队列的叙述中正确的是(分数:2.00)A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表 D.队列是先进后出的线性表解析:解析 队列是指允许在一端进行插入、而在另一端进行删除的线性表,选项 A 和选项 B 错误。允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项 C 正确,选项 D 错误。9.有以下程序:#include iostreamusing namespac
32、e std;class sampleprivate:iht n;public:sample()sample(int m)n=m;void addvalue(int m)sample s;s.n=n+m;*this=s;void disp()cout“n=“nend1;int main()sample s(10);s.addvalue(5);s.disp();return 0;程序运行后的输出结果是(分数:2.00)A.n=10B.n=5C.n=15 D.n=20解析:解析 本题考核 this 指针的应用。上述程序中 sample 类定义了一个 addvalue 非静态成员函数。addvalue
33、 函数的原型是:void addvalue(sample*this,int m);,该函数的第一个参数是执行该类对象的一个指针即 this 指针。由于这个参数是系统隐含的,所以我们在定义该成员函数时并没有看到这样一个参数。在成员函数的定义体中,可以通过 this 访问这一参数。上述程序的最后输出结果是 15。10.下面有关重载函数的描述中正确的是(分数:2.00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须具有不同的形参列表 D.重载函数名可以不同解析:解析 所谓函数重载,是指同一个函数名可以对应多个函数的实现。进行函数重载时,要求同名函数在参数个数上不同,
34、或者参数类型上不同。即重载函数具有不同的形参列表。11.下列叙述中正确的是(分数:2.00)A.在模块化程序设计中,一个模块应尽量多的包括与其他模块联系的信息B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的每一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则 D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法解析:解析 选项 A 错误,在模块化设计中,要求将一个大程序按人们能理解的大小规模进行分解,使每个模块都能易于理解,各模块的功能尽量单一,各模块之间的联系尽量的少。选项 B 错误,自顶向下、逐步细化的设计过程,主要包括两个方面:将复杂问
35、题的解法分解和细化成由若干模块组成的层次结构;将一个模块的功能逐步分解细化为一系列的处理步骤,直到某种程序设计语言的语句或某种机器指令。即在自顶向下、逐步细化的设计过程中,是按照先全局后局部、先整体后细节、先抽象后具体的方法设计程序。选项 D 错误,由于在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则,所以,在程序设计过程中,结构化程序设计方法与模块化程序设计方法是要同时采用的。选项 C 为正确答案。12.对于语句 cin x;中的各个组成部分,下列叙述中错误的是(分数:2.00)A.“cin” 是一个输出流对象 B.“;”的作用是表示语句结束C.“x”是一个变量D.“” 称作提取
36、运算符解析:解析 本题考核 C+的输入流。cin 是一个输入流对象,所以 A 选项的叙述是错误的。13.定义如下枚举类型; enum Monday, Tuesday, Wednesday, Thrusday, Friday=2;则下列语句正确的是(分数:2.00)A.表达式 Wednesday = Friday 的值是 true B.Day day; day=3;C.Day day; day = Monday + 3;D.Day day; day = Tuesday + 10;解析:解析 本题考查枚举类型的定义和使用。枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点:枚举类
37、型的第一个常量默认值是 0;枚举类型常量的值允许彼此相同;虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数进行比较。根据以上知识我们可以得出 B、C、D 选项都不正确。14.有以下程序:#include iostreamusing namespace std;class Apublic:A(int i,int j)a=i;b=j;void move(int x,int y)a+=x;b+=y;void show()couta“,“bend1;private:int a,b;class B: private Apublic:B(int i
38、,int j): A(i,j) void fun()move(3,5); void fl ()A:show();int main()B d(3,4);d.fun();d.f1();return 0;程序执行后的输出结果是(分数:2.00)A.3,4B.6,8C.6,9 D.4,3解析:解析 本题考核派生类的应用。本题中,类 B 是类 A 的私有派生类,在类 B 的成员函数 fun 中调用基类 A 的成员函数 move,并传入实参 3 和 5。在类 B 的成员函数 fl 中调用基类 A 的成员函数 show,来显示基类数据成员 a 和 b 的值。主函数 main 中,定义了派生类 B 的对象 d
39、,并赋初值 3 和 4。然后调用对象 d 的成员函数 fun 和 fl,通过上述对函数 fun 和 n 的功能的描述可知,程序最后输出 6 和 9。15.如果表达式-x/y 中的“-”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为(分数:2.00)A.operator/(x.operator-(),y);B.operator/(operator-(x),y); C.operator-().operator/(y);D.operator/(operator-(x);解析:解析 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符 +,且 c1、c2都
40、是该类的对象,则 c1operator+(c2)与 c1+c2 含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与 c1+c2 含义相同。同理,运算符“/”作为友元函数重载,则(-x)/y 与表达式operator / (-x),y)相同。前缀运算符“-”作为友元函数重载,则-X 与 operator-(x)相同,所以组合起来是 operator/(operator -(x),y);,即 B 选项。16.在深度为 5 的满二叉树中,叶子结点的个数为(分数:2.00)A.31B.32C.16 D.15解析:解析 二叉树的一个性质是,在二叉树的第 k 层上,最多有 2k
41、-1(k1)”个结点。对于满二叉树,每一层上的结点数都达到最大值,即在满二叉树的第 k 层上有 2(上标)个结点。所以,在深度为 5 的满二叉树中,所有叶子结点在第 5 层上,即其结点数为 2 k-1=25-1=16。17.有以下程序:#include iostreamusing namespace std;#define PI 3.14class Pointprivate:int x,y;public:Point(int a,int b)x=a;y=b;int getx()return x;int gety()return y;class Circle: public Pointprivat
42、e:int r;public:Circle(int a, int b,int c):Point(a,b)r=c;int getr()return r;double area()return PI*r*r;, int main()Circle c1(5,7,10);coutc1 .area()endl;return0;程序执行后的输出结果是(分数:2.00)A.314 B.157C.78.5D.153.86解析:解析 本题考核派生类的定义和应用。本程序设计了一个点类 Point,包含了横、纵两个坐标数据 x 和 y,由它派生出了圆类 Circle,并加入了新的数据成员,即一个半径 r 和一个求圆
43、面积的函数成员area。在主函数 main 中,首先定义了一个圆 Circle 类的对象 c1,并通过它的构造函数初始化其数据成员。由此可知,其半径 r 的值为 10,所以其面积为 PI*1010=314,即对象 c1 的函数成员 area 的返回值为314。18.关于类和对象描述错误的是(分数:2.00)A.对象(Object)是现实世界中的客观事物,对象具有确定的属性B.类是具有相同属性和行为的一组对象的集合C.对象是类的抽象,类是对象的实例 D.类是对象的抽象,对象是类的实例解析:解析 C+中,类是用户自定义的一种数据类型,对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类作为
44、一种数据类型,它可以定义多个对象。19.下列叙述中正确的是(分数:2.00)A.程序执行的效率与数据的存储结构密切相关 B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对解析:解析 程序执行的实际计算工作量不仅与程序的控制结构有一定的关系,与处理的数据量有关,而且还与数据的存储结构密切相关。所以,选项 A 正确,选项 B 和C 错误。所以,本题的正确答案为 A。20.下列语句段将输出字符*的个数为int i=100;while(1)i-;;if(i=0)break;cout*;(分数:2.00)A.98 个B.99 个 C.100 个D.10
45、1 个解析:解析 本题考核 while 循环的运用。在 while 循环体中,先将变量 i 减 1,然后通过判断 i 是否为 0 来结束循环,最后才执行输出。所以,cout*;语句在 i 的值为 1002 时会被执行,而 i 为 1时循环结束。即 cout*;语句被执行的次数是 99 次。故应该选择 B。21.在关系数据库中,用来表示实体之间联系的是(分数:2.00)A.树结构B.网结构C.线性表D.二维表 解析:解析 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。即关系模型是用表格数据来表示实体本身及其相互之间的联系。本题的正确答案是 D。22.下列对模板的声明中正确的是(分
46、数:2.00)A.templateTB.templateclass T1,T2C.templateclass T1,class T2 D.templateclass T1 ;class T2解析:解析 本题考核模板的定义。模板定义的类型参数表中包含一个或多个由逗号分隔的类型参数项,每一项由关键字 class 后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。23.下面类的定义,有( )处错误。class MyClasspublic:void MyClass();MyClass(int Val
47、ue);private:int i=0;(分数:2.00)A.1B.2C.3 D.4解析:解析 上述类的定义共有 3 处错误。第一处:类的成员变量不能在定义时进行初始化:第二处:类的构造函数不能有返回值(包括 void 类型);第三处:类的析构函数不能有参数。24.有以下程序:#include iostreamusing namespace std;class Aprivate:iht a;public:A(int i)a=i;void disp()couta“,“;class Bprivate:int b;public: B(int j)b-j;void disp()coutb“,“;class C: public B,public Aprivate:int c;public:C(int k):A(k-2),B(k+2)c=k;void disp()A:disp();B:disp();coutcen