1、二级 C+分类模拟 251及答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下列关于 C+流的描述中,错误的是_。(分数:2.50)A.cout“A“表达式可输出字符 AB.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out模式打开的文件不存在时,将自动建立一个新文件2.下面的符号中可以用作 C+标识符的是_。(分数:2.50)A.3testB.fccotherC.elseD.radius3.下列关于虚函数的说明中,正确的是_。(分数:1.00)A.从虚基类继承的函数都
2、是虚函数B.虚函数不得是静态成员函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数4.关于类模板,下列表述中不正确的是_。(分数:3.00)A.类模板中声明的类称为模板类B.类模板只能有虚拟类型参数C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数5.若有以下变量和函数说明: #includeiostream.h charCh=“*“; void sub (int x,int y,char ch,double*Z) switch(ch) case“+“:*Z=x+y;break: case“-“:*Z=x-y;break: case“*“:*Z=x*y;
3、break: case“/“:*Z=X/y;break; 以下合法的函数调用语句是 _ 。(分数:1.00)A.sub(10,20,Ch,y);B.sub(1.2+3,2*2,“+“, class TV public: Tv(int s=2):size(s) TV(const TV private: int size; ; int main() TV room1(1), room2(room1), room3; TV*roomPtr=new TV(3); delete roomPtr; return 0; 运行时的输出结果是_。(分数:1.00)A.3211B.3210C.3121D.2323
4、7.某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是_。(分数:2.50)A.10B.8C.6D.48.通过运算符重载,只能改变运算符原有的_。(分数:1.00)A.优先级B.操作数个数C.操作数类型D.结合性9.若有如下程序: #includeiostream using narnespace std; class TestClass public: void who()cout“TestClass“endl; ; class TestClassl: public TestClass public: void who()cout“TestClass1“endl; int main(
5、) TestClass*p; TcstClass1 obj1; p=obj1; p-who(); return 0; 则该程序运行后的输出结果是_。(分数:1.00)A.TestClasslB.TestClassC.0D.无输出10._ 不是构造函数的特征。(分数:1.00)A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明11.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(va
6、l); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是_。(分数:1.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数12.算法的有穷性是指_。(分数:2.50)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用13.下列语句都是程序运行时的第 1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是_。(分数:2.00)A.coutinternal12345;B.coutleft12345;C.cou
7、tright12345;D.coutsetw(6)12345;14.下列关于函数模板的描述中,正确的是_。(分数:1.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数15.已知 outfile是一个输出流对象,要想像 outfile的文件指针定位到当前位置之前 321字节处,正确的函数调用语句是(分数:2.00)A.outfile.seekp(321,ios_base:cur);B.outfile.seekp(321,ios_base:beg);C.outfile.seekp
8、(-321,ios_base:beg);D.outfile.seekp(-321,ios_base:cur);16.C+中的模板包括(分数:2.00)A.对象模板和函数模板B.对象模板和类模板C.函数模板和类模板D.变量模板和对象模板17.下列成对的表达式中,运算符“/”的意义相同的一对是 _ 。(分数:2.00)A.8/3和 8.0/3.0B.8/3.0和 8/3C.8.0/3和 8/3D.8.0/3.0和 8.0/318.有以下程序: #includeiostream using namespace std; class Complex public: Complex(double r=0
9、,double i=0):re(r),im(i) double real() constreturn re; double imag() constreturn im; Complex operator+(Complex c)const return Complex(re+c.re,im+c.im); private: double re,im; ; int main() Complex a=Complex(1,1)+Complex(5); couta.real()“+“a.imag()“i“endl; return 0; 程序执行后的输出结果是_。(分数:1.00)A.6+6iB.6+1iC
10、.1+6iD.1+1i19.有下列程序: #include stdio.h int fun(int (*s)4,int n,int k) int m,i; m=s0k; for(i=1;in;i+) if(sikm)m=sik; return m; void main() int a44=1,2,3,4),11,12,13,14,21,22,23,24,31,32,33,34; printf(“%d/n“,fun(a,4,0); 程序的运行结果是_。(分数:2.50)A.4B.34C.31D.3220.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员
11、的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型21.以下选项中合法的实型常数是(分数:2.00)A.5 E 2.0B.E-3C2 E0D.1.3 E22.若已知 char str 20;,且有语句 cinstr;,此时输入为“This is a program“,则所得的结果是 str= _ 。(分数:2.00)A.This is a programB.ThisC.This isD.This is a23.为完成下面的程序,应在划线处填入的语句是 #includeiostream using namespace s
12、td; class Base private: int x; public: Base(int i) x=i; Base() ; class Derived:public Base public: _ /完成类 Derive构造函数的定义 ; int main() Derived obj; return 0; (分数:2.00)A.Derived(int i):Base(i)B.Derived()C.Void Derived (int i):Base(i)D.Denved(int i)Base(i);24.为类 Matrix重载下列运算符时,只能作为 Matrix类成员函数重载的运算符是_。(
13、分数:2.50)A.+B.=C.D.+25.下列控制对齐方式的操作符中,错误的是_。(分数:2.00)A.internalB.centerC.leftD.right26.在下列字符中,不允许作为 C+标以符的是_。(分数:2.50)AbBBC._D.227.有如下函数模板定义: tempiatetypename T1,typename T2 T1 FUN(T2 n)return n*5.0; 若要求以 int型数据 9作为函数实参调用该模板,并返回一个 double型数据,则该调用应表示为_。(分数:2.50)A.FUN(9)B.FUN9C.FUNdouble(9)D.FUN9(double)
14、28.下面描述正确的是_。(分数:1.00)A.软件测试是指动态测试B.软件测试可以随机地选取测试数据C.软件测试是保证软件质量的重要手段D.软件测试的目的是发现和改正错误29.有如下类定义: class Test public: Test()a=0;c=0;/ int f(int a)constthis-a=a;/ static int g()return a;/ voidh(intb)Test:b=b;/ private: int a; static int b; const int c; ; int Test:b=0; 在标注号码的行中,能被正确编译的是_。(分数:1.00)A.B.C.
15、D.30.针对数组定义 int data10;,下列表述中错误的是(分数:1.00)A.用*data 可访问到数组的首元素B.用 data9可访问到数组的末元素C.用 data10访问数组元素会超出数组边界D.data共有 10个元素,其首元素是 data131.执行以下程序时,输入一行字符串为“Thank you very much!”,程序的输出结果为_。 #includeiostream using namespace std; int main() char a100; cina; couta“/n“; return 0;(分数:2.00)ATB.ThankC.Thank you ve
16、ry much!D.Thank you32.if语句的语法格式可描述为: 格式 1:if(条件)语句 或 格式 2:if(条件)语句 1 else语句 2 关于上面的语法格式,下列表述中错误的是_。(分数:1.00)A.条件部分可以是一个 if语句,例如 if(if(a=0)B.语句部分可以是一个 if语句,例如 if()if()C.如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位置,语句功能不变D.语句部分可以是一个循环语句,例如 if()while()33.下列属于黑盒测试方法的是_。(分数:2.50)A.语句覆盖B.逻辑覆盖C.边界值分析D.路径分析34.一个栈的初始状态为空。
17、现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:2.50)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.5432IEDCBA35.有以下语句,则对 a数组元素的引用不正确的是(0i9) int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:1.00)A.ap=a)B.*(B.Decr operator -(DecrC.friend DecrD.friend Decr operator -(Decr37.下列关于派生类的说法中,错误的是_。(分数:2.00)A.一个派生类可以作为另一个派生
18、类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了其基类的成员D.派生类中继承的基类成员的访问权限在派生类中保持不变38.当一个派生类对象结束其生命周期时,系统自动做的事情是_。(分数:2.50)A.先调用派生类的析构函数后调用基类的析构函数B.先调用基类的析构函数后调用派生类的析构函数C.如果派生类没有定义析构函数,则只调用基类的析构函数D.如果基类没有定义析构函数,则只调用派生类的析构函数39.有如下两个类定义: class AA); class l3B AA v1,*v2; BB v3; int*v4; ; 其中有一个成员变量的定义是错误的,这个变量是_。(分数
19、:2.50)Av1Bv2Cv3Dv440.有如下程序: #include iostream using namespace std; class A public: A() cout“A“; ; class B:public A public: B() cout“-B“;delete p; int main( ) B obj; return 0;(分数:1.00)A.BAAABAB.ABABAAC.BAABAAD.ABAABA二级 C+分类模拟 251答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下列关于 C+流的描述中,错误的是_。(分数:
20、2.50)A.cout“A“表达式可输出字符 A B.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out模式打开的文件不存在时,将自动建立一个新文件解析:解析 C+流有 4个预定义的流对象:cin、cout、cerr 和 clog。cin 使用提取运算符“”实现数据的输入,其余三个标准流使用插入运算符“”实现数据的输出。2.下面的符号中可以用作 C+标识符的是_。(分数:2.50)A.3testB.fccotherC.elseD.radius 解析:解析 C+标识符是以字母、下划线开头的,由字母、数字及下划线组成的,不
21、与关键字相同的字符串。选项 C中 else为关键字。3.下列关于虚函数的说明中,正确的是_。(分数:1.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数 C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数解析:解析 在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数。虚函数必须是基类的非静态成员函数,其访问权限可以是 protected或 public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为 B。4.关于类模板,下列表述中不正确的是_。(分数:3.00)A.类模板中声明的类称为模板类B.类模板只能有虚拟类型参数 C.类模
22、板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数解析:5.若有以下变量和函数说明: #includeiostream.h charCh=“*“; void sub (int x,int y,char ch,double*Z) switch(ch) case“+“:*Z=x+y;break: case“-“:*Z=x-y;break: case“*“:*Z=x*y; break: case“/“:*Z=X/y;break; 以下合法的函数调用语句是 _ 。(分数:1.00)A.sub(10,20,Ch,y);B.sub(1.2+3,2*2,“+“, class TV public:
23、 Tv(int s=2):size(s) TV(const TV private: int size; ; int main() TV room1(1), room2(room1), room3; TV*roomPtr=new TV(3); delete roomPtr; return 0; 运行时的输出结果是_。(分数:1.00)A.3211 B.3210C.3121D.2323解析:解析 由题意可知,输出 size的值是在析构函数中,main 函数中有四个对象room1,room2,room3 和 roomPtr指向的对象,在对象 room1中,调用构造函数初始化 size的值为 1;对象
24、 room2中,调用复制构造函数用 room1.size初始化,所以 room2的 size值也是 1;对象 room3中,调用默认构造函数 size值是 2;roomPtr 指向的对象调用构造函数初始化 size的值为 3;在释放各个对象时,首先调用 roomPtr指向的对象的析构函数,输出 roomPtr指向对象的 size值 3;在程序运行结束后,编译器会按照对象构造顺序的相反顺序依次调用析构函数释放 room3、room2、room1 对象,所以依次输出211,综上输出结果为 3211,答案为 A选项。7.某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是_。(分数:2.50)
25、A.10B.8C.6 D.4解析:解析 根据二叉树的性质判定,在任意二叉树中,度为 0的叶子结点总是比度为 2的结点多一个。8.通过运算符重载,只能改变运算符原有的_。(分数:1.00)A.优先级B.操作数个数C.操作数类型 D.结合性解析:解析 重载运算符时,运算符的优先级、结合性或操作数数目不能改变,选项 A、B、D 是错误的;选项 C正确。答案为 C选项。9.若有如下程序: #includeiostream using narnespace std; class TestClass public: void who()cout“TestClass“endl; ; class TestCl
26、assl: public TestClass public: void who()cout“TestClass1“endl; int main() TestClass*p; TcstClass1 obj1; p=obj1; p-who(); return 0; 则该程序运行后的输出结果是_。(分数:1.00)A.TestClassl B.TestClassC.0D.无输出解析:解析 程序中的 TestClassl为 TestClass的派生类,主函数 maln中定义 TestClass对象*p,TestClass1 对象 obj1,然后 p引用 obj1,执行 p-who()则是调用基类中的
27、who函数,输出TestClass。10._ 不是构造函数的特征。(分数:1.00)A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明 解析:11.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是_。(分数:1.00)A.编译出错,无法运
28、行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析 本题考查函数调用及传值方式传递参数,执行函数 function时,并没有将 3的值传回来,而 val又没有初始化,所以会输出一个不确定的值,D 选项正确。12.算法的有穷性是指_。(分数:2.50)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析 算法的有穷性,是指算法必须在有限的时间内做完,即算法必须能在执行有限步骤之后终止。算法的有穷性还应包括实现的执行时间的含义,如果一个算法需要执行千万年,显然失去了实用价值。13.下列语句都是程序运行时的第
29、 1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是_。(分数:2.00)A.coutinternal12345;B.coutleft12345;C.coutright12345;D.coutsetw(6)12345; 解析:解析 选项 A,B,C 都没有指输出数据的宽度,所以在输出时,按实际字符的宽度输出,而选项D指定输出字符的宽度为 6,而实际输出的宽度等于 5,所以最后一个字符用空格补齐。14.下列关于函数模板的描述中,正确的是_。(分数:1.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参
30、数,可以从函数模板得到不同的实例函数 解析:解析 函数模板只是声明了一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型参数标识符之后,才能产生真正的函数。15.已知 outfile是一个输出流对象,要想像 outfile的文件指针定位到当前位置之前 321字节处,正确的函数调用语句是(分数:2.00)A.outfile.seekp(321,ios_base:cur);B.outfile.seekp(321,ios_base:beg);C.outfile.seekp(-321,ios_base:beg);D.outfile.seekp(-321,ios_base:
31、cur); 解析:解析 本题考核文件 I/O操作中文件流的定位。函数 seekp用于将输出流定位于绝对位置 pos,函数返回流对象本身的引用。ios_base:cur 相对于当前位置(负数表示当前位置之前)。由此可知只有选项 D符合题目要求16.C+中的模板包括(分数:2.00)A.对象模板和函数模板B.对象模板和类模板C.函数模板和类模板 D.变量模板和对象模板解析:解析 C+模板包括函数模板和类模板两大类。17.下列成对的表达式中,运算符“/”的意义相同的一对是 _ 。(分数:2.00)A.8/3和 8.0/3.0B.8/3.0和 8/3C.8.0/3和 8/3D.8.0/3.0和 8.0
32、/3 解析:18.有以下程序: #includeiostream using namespace std; class Complex public: Complex(double r=0,double i=0):re(r),im(i) double real() constreturn re; double imag() constreturn im; Complex operator+(Complex c)const return Complex(re+c.re,im+c.im); private: double re,im; ; int main() Complex a=Complex(
33、1,1)+Complex(5); couta.real()“+“a.imag()“i“endl; return 0; 程序执行后的输出结果是_。(分数:1.00)A.6+6iB.6+1i C.1+6iD.1+1i解析:解析 运算符十在类 Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以 main函数中语句 Complex a=Complex(1,1)+Complex(5);的作用相当于 Complex a(1+5,1);,即对象 a的数据成员 re的值为 6,imag 的值为 1,所以输出为 6+1i。19.有下列程序: #include stdio.h int fun(i
34、nt (*s)4,int n,int k) int m,i; m=s0k; for(i=1;in;i+) if(sikm)m=sik; return m; void main() int a44=1,2,3,4),11,12,13,14,21,22,23,24,31,32,33,34; printf(“%d/n“,fun(a,4,0); 程序的运行结果是_。(分数:2.50)A.4B.34C.31 D.32解析:解析 在程序中 fun函数的功能在于求取二维数组 s中 1至 n行中每行第 k个元素中的最大者。注意:i=0 时为第一行,故 fun(a,4,0)在于求取 11、21、31 中的最大值
35、,显然为 31。20.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型 解析:解析 本题考查类模板的概念和定义,模板参数可以作为成员函数的局部变量的类型。21.以下选项中合法的实型常数是(分数:2.00)A.5 E 2.0B.E-3C2 E0 D.1.3 E解析:解析 本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必须为整数,故排除A由于符号 E前面必须有数字,故 B也是错误的。D 在指数符号后面没有数字,是错误的
36、。答案为 C。22.若已知 char str 20;,且有语句 cinstr;,此时输入为“This is a program“,则所得的结果是 str= _ 。(分数:2.00)A.This is a programB.This C.This isD.This is a解析:23.为完成下面的程序,应在划线处填入的语句是 #includeiostream using namespace std; class Base private: int x; public: Base(int i) x=i; Base() ; class Derived:public Base public: _ /完
37、成类 Derive构造函数的定义 ; int main() Derived obj; return 0; (分数:2.00)A.Derived(int i):Base(i) B.Derived()C.Void Derived (int i):Base(i)D.Denved(int i)Base(i);解析:解析 本题考核派生类中的构造函数。程序中,类 Derived是基类 Base的公有派生。在类Derived的构造函数应该包括调用基类构造函数使基类的数据成员得以初始化。24.为类 Matrix重载下列运算符时,只能作为 Matrix类成员函数重载的运算符是_。(分数:2.50)A.+B.=
38、C.D.+解析:25.下列控制对齐方式的操作符中,错误的是_。(分数:2.00)A.internalB.center C.leftD.right解析:解析 对齐方式的控制操作符 left的含义是在设定的宽度内左对齐输出,右端填已设定的填充字符;right(此为默认设置)在设定的宽度内右对齐输出;internal 在设定的宽度内右对齐输出,但若有符号(-或+),符号置于最左端。26.在下列字符中,不允许作为 C+标以符的是_。(分数:2.50)AbBBC._D.2 解析:解析 在 C+中,标识符只能以字母、数字和下画线组成,并且首字母不能为数字。所以 D选项错误。27.有如下函数模板定义: te
39、mpiatetypename T1,typename T2 T1 FUN(T2 n)return n*5.0; 若要求以 int型数据 9作为函数实参调用该模板,并返回一个 double型数据,则该调用应表示为_。(分数:2.50)A.FUN(9)B.FUN9C.FUNdouble(9) D.FUN9(double)解析:28.下面描述正确的是_。(分数:1.00)A.软件测试是指动态测试B.软件测试可以随机地选取测试数据C.软件测试是保证软件质量的重要手段 D.软件测试的目的是发现和改正错误解析:解析 软件测试有多种方法,根据软件是否需要被执行,可以分为静态测试和动态测试,故 A选项叙述错误
40、。软件测试应在测试之前制定测试计划,并严格执行,排除测试随意性,并且需要设计正确的测试用例,故 B选项叙述错误。软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误,改正错误是调试的过程,故 D选项叙述错误。软件测试是保证软件质量的重要手段,故 C选项正确。29.有如下类定义: class Test public: Test()a=0;c=0;/ int f(int a)constthis-a=a;/ static int g()return a;/ voidh(intb)Test:b=b;/ private: int a; static int b; const int c; ; in
41、t Test:b=0; 在标注号码的行中,能被正确编译的是_。(分数:1.00)A.B.C.D. 解析:解析 只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为c。通过默认构造函数初始化 c,所以不正确。常成员函数只能引用本类中数据成员,而不能修改它,所以不正确。静态成员函数由于没有 this指针,所以不能访问本类中的非静态成员,所以错误。30.针对数组定义 int data10;,下列表述中错误的是(分数:1.00)A.用*data 可访问到数组的首元素B.用 data9可访问到数组的末元素C.用 data10访问数组元素会超出数组边界D.data共有 10个元素,其
42、首元素是 data1 解析:31.执行以下程序时,输入一行字符串为“Thank you very much!”,程序的输出结果为_。 #includeiostream using namespace std; int main() char a100; cina; couta“/n“; return 0;(分数:2.00)ATB.Thank C.Thank you very much!D.Thank you解析:32.if语句的语法格式可描述为: 格式 1:if(条件)语句 或 格式 2:if(条件)语句 1 else语句 2 关于上面的语法格式,下列表述中错误的是_。(分数:1.00)A.条
43、件部分可以是一个 if语句,例如 if(if(a=0) B.语句部分可以是一个 if语句,例如 if()if()C.如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位置,语句功能不变D.语句部分可以是一个循环语句,例如 if()while()解析:解析 本题考查 if语句,if 语句的条件部分不能嵌套 if语句,所以 A选项错误;B 选项就是 if语句嵌套;C 选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D 选项也正确。33.下列属于黑盒测试方法的是_。(分数:2.50)A.语句覆盖B.逻辑覆盖C.边界值分析 D.路径分析解析:解析 黑盒测试用于对软件的功能进行测试和
44、验证,不须考虑程序内部的逻辑结构。黑盒测试的方法主要包括:等价类划分法、边界值分析法、错误推测法、因果图等。语句覆盖、逻辑覆盖、路径分析均是白盒测试的方法。34.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:2.50)A.12345ABCDEB.EDCBA54321 C.ABCDE12345D.5432IEDCBA解析:解析 本题考查栈的特性,栈是按照“后进先出”的原则组织数据的,所以出栈顺序是EDCBA54321。35.有以下语句,则对 a数组元素的引用不正确的是(0i9) int a10=0,1,2,3,4,
45、5,6,7,8,9,*p=a;(分数:1.00)A.ap=a)B.*(B.Decr operator -(DecrC.friend DecrD.friend Decr operator -(Decr 解析:解析 非成员函数重载用友元函数的形式实现,“- -”运算符重载分为前置和后置两种重载方式。用友元函数来实现“- -”运算符的重载时,前置“- -”运算符的重载的一般格式为:friendtypeoperator- -(ClassName class l3B AA v1,*v2; BB v3; int*v4; ; 其中有一个成员变量的定义是错误的,这个变量是_。(分数:2.50)Av1Bv2Cv
46、3 Dv4解析:解析 本题主要考查类对象的定义,类的对象一般放在类结构体外或在主函数中定义,而不能放在类定义的结构体中,但自身类的指针可以,本题 BB v3不能被定义于类体内。40.有如下程序: #include iostream using namespace std; class A public: A() cout“A“; ; class B:public A public: B() cout“-B“;delete p; int main( ) B obj; return 0;(分数:1.00)A.BAAABAB.ABABAA C.BAABAAD.ABAABA解析:解析 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为 B。