1、二级 C+-237 及答案解析(总分:71.00,做题时间:90 分钟)一、选择题(总题数:36,分数:71.00)1.下列描述中正确的是_。(分数:2.50)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,义是物理实体D.软件是程序、数据与相关文档的集合2.下列叙述中正确的是_。(分数:1.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对3.有如下程序: #includeiostream using namespace std; class B public: virtual void f(
2、)cout“B“; void g()cout“B“; ; class D:public B public: void f()cout“D“; void g()cout“D“;) ; void h(B* p)p-f();p-g(); int main() D obj; h( return 0; 运行这个程序的输出结果是_。(分数:2.00)A.DDB.BBC.BDD.DB4.有如下程序: #includeiostream using namespace std; class Base public: void output() cout1; virtual void Print() cout“B
3、“; ; class Derived: public Base public: void output() cout2; void Print() cout“D“; ; int main() Base *ptr=new Derived; ptr-output(); ptr-Print(); delete ptr; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.1BB.1DC.2BD.2D5.下列描述中正确的是_。(分数:2.50)A.软件工程只是解决软件项日的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D
4、.软件工程只是解决软件开发中的技术问题6.有如下程序: #includeiomanip #includeiostream using namespace std; int main() coutsetfill(“*“)setw(6)123456; return 0; 运行时的输出结果是_。(分数:2.50)A.*123*456B.*123456*C.*123456D.1234567.下列关于运算符重载不正确的是_。(分数:1.00)A.运算符重载不能改变运算符的操作数个数B.运算符重载不能改变运算符的优先级C.运算符重载不能改变运算符的结合性D.运算符重载能改变对预定义类型数据的操作方式8.下
5、列程序的运行结果是 #includeiostream.h class A int a; public: A( ) a0; A(int aa) aaa; cout a; ; void main( ) A x,y(2) ,z(3) ; cout endl; (分数:2.00)A.00B.23C.34D.259.有如下程序: #includeiostream using namespace std; class Sample public: Sample() Sample()cout“*“; ; int main() Sample temp2,*pTemp2; return 0; 执行这个程序输出星
6、号(*)的个数为_。(分数:2.50)A.1B.2C.3D.410.下列程序的输出结果是 main() int x1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; cout“a“a“b“bendl; (分数:2.00)A.a2,b=1B.a=1,b1C.a1,b=0D.a=2,b=211.有如下程序: #includeiostream using namespace std; class Base public: void fun1()cout“Baseha/n“; virtual void fun2()cout“Base/
7、n“; ; class Derived:public Base public: void fun1()cout“Derived/n“; void fun2()cout“Derived/n“; ; void f(Baseb.fun2(); int main() Derived obj; f(obj); return 0; 执行这个程序的输出结果是_。(分数:2.00)A.BaseBaseB.BaseDerivedC.DerivedBaseD.DerivedDerived12.要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用(分数:2.00)A.重载函数B.内联函数C.静态函数D
8、.虚函数13.有如下程序: #includeiostream using namespace std; void fl(intx,inty) int z=x;x=y;y=z; void f2(int x,int y) int z=x;x=y;y=z; int main() int x=10,y=26; f1(x,y); f2(x,y); coutyendl; return 0; 运行时的输出结果是_。(分数:2.50)A.10B.16C.26D.3614.下列对变量的引用中,错误的是 _ 。(分数:1.00)A.int a; int class B private: int a,b; publ
9、ic: B() B(int i,int j); void printb(); ; class A B C; public: A() A(int i,int j); void printa(); ; A:A(int i,int j) :c(i,j) void A:printa() c.printb (); B:B(int i, int j) a=i; b=j; void B: :printb() couta“, “bend1; int main () A m(7,8); m.printa(); return 0; 该程序运行后的输出结果是 _ 。(分数:1.00)A.5,6B.7,8C.8,9D
10、.9,1017.对于语句 coutendlx;中的各个组成部分,下列叙述中错误的是_。(分数:2.00)A.“cout“是一个输出流对象B.“endl“的作用是输出回车换行C.“x“是一个变量D.“称作提取运算符18.下面不属于 C+的预定义的流对象是_。(分数:2.50)A.cinB.iostreamC.clogD.cerr19.有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB 的下列定义中,正确的是 _ 。(分数:2.00
11、)A.XB:XB(int a,int b):x(a),y(b)B.XB:XB(int a,int b):XA(a),y(b)C.XB:XB(int a,int b):x(a),XB(b)D.XB:XB(int a,int b):XA(a),XB(b)20.设有宏定义“#dcfine IsDIV(k,n) (k%n=1?1:0)“且变量 m 已正确定义并赋值,则宏调用“IsDIV(m,5)IsDIV(m,7)”为真时所要表达的是_。(分数:2.50)A.判断 m 是否能被 5 或者 7 整除B.判断 m 是否能被 5 和 7 整除C.判断 m 被 5 或者 7 整除是否余 1D.判断 m 被 5
12、 和 7 整除是否都余 121.在数据库设计中,数据流图表达的是 _。(分数:2.00)A.数据和数据结构的关系B.数据和算法的关系C.数据和处理的关系D.数据和通信的关系22.下列叙述中正确的是_。(分数:2.50)A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.上述三种说法都不对23.有以下程序: void fun(int a*a,int i,int i) int t; if(ij); t=ai;aiaj;ajt; fun(a,+i,-j); mai
13、n() inta1,2,3,4,5,6,i; fun(a,0,5); for(i0;i(6;i+) cout(ai; 执行后输出结果是 _ 。(分数:2.00)A.6 5 4 3 2 1B.4 3 2 1 5 6C.4 5 6 1 2 3D.1 2 3 4 5 624.设以下变量均为 int 类型,则值不等于 7 的表达式是 _ 。(分数:2.00)A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y)D.(y=6,y+1,x=y,x+1)25.以下哪些不是程序调试的基本步骤_?(分数:2.50)A.分析错误原因B.错误定位C.修改设计代码以
14、排除错误D.回归测试,防止引入新错误26.在一个函数体中,定义一个变量的默认存储类型是_。(分数:1.00)A.externB.registerC.autoD.static27.下列描述中,错误的是_。(分数:2.00)A.公有继承时基类中的公有成员在派生类中仍是公有成员B.公有继承时基类中的保护成员在派生类中仍是保护成员C.保护继承时基类中的公有成员在派生类中仍是公有成员D.保护继承时基类中的保护成员在派生类中仍是保护成员28.下列程序的输出结果是 #includeiostreamh void main( ) double d=3.2; int x,y; x=12; y=(x+38)/50;
15、 cout y * d end1;(分数:1.00)A.3B.3,2C.0D.30729.软件测试的目的是_。(分数:2.50)A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误30.C+语言本身没有定义 I/O 操作,但 I/O 操作包含在 C+实现中。C+标准库 iostream 提供了基本的I/O 类。I/O 操作分别由两个类 istream 和_提供。(分数:2.50)A.fstreamB.iostreamC.ostreamD.cin31.语句 int*p= int i,j,s1=0; for(i=0;i2;i+) for(j=0;j2;j+) if(
16、i=j) s1=s1+aij; couts1endl; 则该程序的输出结果为_。(分数:2.50)A.6B.7C.8D.933.若已定义了类 Vehicle,则下列派生类定义中,错误的是_。(分数:2.00)A.class Car:vehicle/*类体略*/;B.class Car:public car/*类体略*/;C.class Car:public Vehicle/*类体略*/);D.class Car:virtual public Vehicle/*类体略*/;34.有如下类定义: class Base int m; int n; public: Base(int m1,int n1
17、):n(n1),m(m1) ; class Derived:public Base int q; public: Derived(int m1,int n1,int q1):q(q1),Base(m1,n1); ; 在创建一个 Derived 对象时,数据成员 m、n 和 q 被初始化的顺序是_。(分数:2.50)A.m、n、qB.n、m、qC.q、m、nD.q、n、m35.有如下类定义: class XX int xx; public: XX():xx(0)cout“A“;) XX(int n):xx(n)cout“B“; ; class YY:public XX int yy; publi
18、c: YY():yy(0)coutyy; YY(int n):XX(n+1),yy(n)coutyy; YY(int m,int n):XX(m),yy(n)coutyy; ; 下列选项中,输出结果为 AO 的语句是_。(分数:2.00)A.YY y1(0,0);B.YY y2(1);C.YY y3(0);D.YY y4;36.下列字符串中可以用作 C+标识符的是_。(分数:2.50)A.2009varB.gotoC.test-2009D._123二级 C+-237 答案解析(总分:71.00,做题时间:90 分钟)一、选择题(总题数:36,分数:71.00)1.下列描述中正确的是_。(分数:
19、2.50)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,义是物理实体D.软件是程序、数据与相关文档的集合 解析:解析 软件是程序、数据与相关文档的集合,它是一个逻辑实体。软件的开发要受计算机系统的限制,例如硬件系统的限制、软件操作系统的限制等。2.下列叙述中正确的是_。(分数:1.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对 解析:解析 程序调试就是诊断和改正程序中的错误,由程序开发者完成。软件测试是为了发现错误而执行程序的过程,它由专门的测试人员完成。软件维护是指软件系统交付使用以后,
20、为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。3.有如下程序: #includeiostream using namespace std; class B public: virtual void f()cout“B“; void g()cout“B“; ; class D:public B public: void f()cout“D“; void g()cout“D“;) ; void h(B* p)p-f();p-g(); int main() D obj; h( return 0; 运行这个程序的输出结果是_。(分数:2.00)A.DDB.BBC.BD
21、D.DB 解析:解析 在基类 B 中定义虚函数 f()和成员函数 g(),而在派生类 D 中定义了函数 f()和同名函数 g()。而函数 h 中的形参为指向基类的指针变量 p,所以在主函数中执行 h( class Base public: void output() cout1; virtual void Print() cout“B“; ; class Derived: public Base public: void output() cout2; void Print() cout“D“; ; int main() Base *ptr=new Derived; ptr-output();
22、 ptr-Print(); delete ptr; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.1BB.1D C.2BD.2D解析:解析 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个指向派生类对象的基类指针 ptr,执行 ptr-output 后,会执行基类的 output 函数,输出 1,由于 Print 是虚函数,所以 ptr-Print()会执行派生类的 print,即输出 D,所以本题答案为 B。5.下列描述中正确的是_。(分数:2.50)A.软件工程只是解决软件项日的管理问题B.软件工程主要解决软件产品的生产
23、率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题解析:解析 软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法来开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程的目标是生产具有正确性、可用性及开销合宜的产品,它的主要思想是强调在软件开发过程中需要应用工程化原则。6.有如下程序: #includeiomanip #includeiostream using namespace std; int main() coutsetfill(“*“)setw(6)12345
24、6; return 0; 运行时的输出结果是_。(分数:2.50)A.*123*456B.*123456*C.*123456 D.123456解析:7.下列关于运算符重载不正确的是_。(分数:1.00)A.运算符重载不能改变运算符的操作数个数B.运算符重载不能改变运算符的优先级C.运算符重载不能改变运算符的结合性D.运算符重载能改变对预定义类型数据的操作方式 解析:解析 本题考查 C+语言中操作符重载的概念。运算符重载的关键字是 operator。运算符重载的规则是重载时不能改变运算符的操作数个数,不能改变运算符的优先级,不能改变运算符的结合性,不能改变对预定义类型数据的操作方式。8.下列程序
25、的运行结果是 #includeiostream.h class A int a; public: A( ) a0; A(int aa) aaa; cout a; ; void main( ) A x,y(2) ,z(3) ; cout endl; (分数:2.00)A.00B.23 C.34D.25解析:解析 本题考查的是对构造函数的掌握,另外“”运算符是右结合的,所以在进行输出的时候都是先把原来的输出后再自加 1。9.有如下程序: #includeiostream using namespace std; class Sample public: Sample() Sample()cout“
26、*“; ; int main() Sample temp2,*pTemp2; return 0; 执行这个程序输出星号(*)的个数为_。(分数:2.50)A.1B.2 C.3D.4解析:解析 考查构造函数和析构函数调用。题中“Sample temp2”生成的对象数组数组有两个元素,调用构造函数 2 次;撤消对象时,相应地调用析构函数 2 次,输出 2 个星号。10.下列程序的输出结果是 main() int x1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; cout“a“a“b“bendl; (分数:2.00)A.a2,b
27、=1 B.a=1,b1C.a1,b=0D.a=2,b=2解析:解析 本题主要考查 switch 语句中,break 语句的作用。每个 case 语句后面如果没有 break 语句,则程序的执行流程将发生变化,即顺序执行各个 case 语句。这种情况一般不符合程序员的设计思路,但也可以用这种特性完成特殊控制。11.有如下程序: #includeiostream using namespace std; class Base public: void fun1()cout“Baseha/n“; virtual void fun2()cout“Base/n“; ; class Derived:pub
28、lic Base public: void fun1()cout“Derived/n“; void fun2()cout“Derived/n“; ; void f(Baseb.fun2(); int main() Derived obj; f(obj); return 0; 执行这个程序的输出结果是_。(分数:2.00)A.BaseBaseB.BaseDerived C.DerivedBaseD.DerivedDerived解析:解析 此题考查的是虚函数的概念。在 C+语言中,一个派生类的对象可以被它的任何一个基类的指针所指向,若基类和派生类中存在一模一样的成员函数。那么通过该基类指针调用这样
29、的成员函数时,若这个成员函数被定义成虚函数,那么就调用派生类中的;否则就调用基类中的。本题中,在 f()函数中,形参 b 是一个基类的引用,它引用的是主函数中定义的派生类对象 obj,所以在调用 fun1()时,运行的是基类的版本,而 fun2()运行的是派生类的版本。12.要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用(分数:2.00)A.重载函数B.内联函数 C.静态函数D.虚函数解析:解析 内联 inline 函数就是取代宏定义的,在编译时展开,插入到相应的位置,从而减少了系统开销,加快了执行速度。虚函数则是为了取消二义性现象,静态函数则是一个类所有对象的共享函数。1
30、3.有如下程序: #includeiostream using namespace std; void fl(intx,inty) int z=x;x=y;y=z; void f2(int x,int y) int z=x;x=y;y=z; int main() int x=10,y=26; f1(x,y); f2(x,y); coutyendl; return 0; 运行时的输出结果是_。(分数:2.50)A.10 B.16C.26D.36解析:解析 该题考查了函数参数传递的两种方式:引用传递和值传递。引用传递时 x 和 y 会交换,而值传递时二者不交换,因此选 10。14.下列对变量的引用
31、中,错误的是 _ 。(分数:1.00)A.int a; int class B private: int a,b; public: B() B(int i,int j); void printb(); ; class A B C; public: A() A(int i,int j); void printa(); ; A:A(int i,int j) :c(i,j) void A:printa() c.printb (); B:B(int i, int j) a=i; b=j; void B: :printb() couta“, “bend1; int main () A m(7,8); m
32、.printa(); return 0; 该程序运行后的输出结果是 _ 。(分数:1.00)A.5,6B.7,8 C.8,9D.9,10解析:解析 本题考核类的定义和应用。程序首先定义了两个类 A 和 B。在类 A 中,其私有数据成员 c为类 B 的对象。类 A 的成员函数 printa()中,调用私有成员对象 c 的成员函数 printb()输出类 B 私有数据成员 a 和 b 的值。17.对于语句 coutendlx;中的各个组成部分,下列叙述中错误的是_。(分数:2.00)A.“cout“是一个输出流对象B.“endl“的作用是输出回车换行C.“x“是一个变量D.“称作提取运算符 解析:
33、解析 此题考查的是 C+语言的输出流。符号“”是预定义插入符,提取运算符是“”。18.下面不属于 C+的预定义的流对象是_。(分数:2.50)A.cinB.iostream C.clogD.cerr解析:解析 C+中的四个预定义流对象:cout,cin,cerr,clog。19.有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB 的下列定义中,正确的是 _ 。(分数:2.00)A.XB:XB(int a,int b):x(a),
34、y(b)B.XB:XB(int a,int b):XA(a),y(b) C.XB:XB(int a,int b):x(a),XB(b)D.XB:XB(int a,int b):XA(a),XB(b)解析:解析 此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式:派生类名(构造函数形参表)基类构造函数(形参表)。20.设有宏定义“#dcfine IsDIV(k,n) (k%n=1?1:0)“且变量 m 已正确定义并赋值,则宏调用“IsDIV(m,5)IsDIV(m,7)”为真时所要表达的是_。(分数:2.50)A.判断
35、 m 是否能被 5 或者 7 整除B.判断 m 是否能被 5 和 7 整除C.判断 m 被 5 或者 7 整除是否余 1D.判断 m 被 5 和 7 整除是否都余 1 解析:解析 本题考查宏定义,宏定义 IsDIV(k,n)的意思是如果 k 对 n 求模的余数为 1,其值等于 1,否则其值等于 0。本题中宏调用表达式是两个宏调用之间的逻辑与运算,所以选项 D 正确。21.在数据库设计中,数据流图表达的是 _。(分数:2.00)A.数据和数据结构的关系B.数据和算法的关系C.数据和处理的关系 D.数据和通信的关系解析:22.下列叙述中正确的是_。(分数:2.50)A.线性表的链式存储结构与顺序存
36、储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.上述三种说法都不对解析:解析 线性表的顺序存储结构使用一组地址连续的存储单元,而链式仔储结构除了存放数据之外,还需要存放指向下一个元素的指针,因此选 B。23.有以下程序: void fun(int a*a,int i,int i) int t; if(ij); t=ai;aiaj;ajt; fun(a,+i,-j); main() inta1,2,3,4,5,6,i; fun(a,0,5); for(i0;i(6;i+) cout(a
37、i; 执行后输出结果是 _ 。(分数:2.00)A.6 5 4 3 2 1 B.4 3 2 1 5 6C.4 5 6 1 2 3D.1 2 3 4 5 6解析:解析 本题采用递归函数的方式将数组中的元素进行倒置,正确答案为 A。24.设以下变量均为 int 类型,则值不等于 7 的表达式是 _ 。(分数:2.00)A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1)解析:25.以下哪些不是程序调试的基本步骤_?(分数:2.50)A.分析错误原因 B.错误定位C.修改设计代码以排除错误D.回归测试,防止
38、引入新错误解析:解析 程序调试的基本步骤: (1)错误定位。从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的内在原因。(2)修改设计和代码,以排除错误。(3)进行回归测试,防止引进新的错误。26.在一个函数体中,定义一个变量的默认存储类型是_。(分数:1.00)A.externB.registerC.auto D.static解析:解析 extern 用来说明定义的变量具有外部链接,这样的变量可以在外部文件中引用,选项 A 错误;使用 register 说明符定义的变量属于寄存器变量,选项 B 错误;static 用来声明一个静态变量,该种类型的变量具有静态存储时期
39、,程序运行过程中只初始化一次,选项 D 错误;C+中默认情况下,在代码块或函数中定义的任意变量都属于自动存储类,相当于显式的使用关键字 auto 声明定义变量;选项 C正确。答案为 C 选项。27.下列描述中,错误的是_。(分数:2.00)A.公有继承时基类中的公有成员在派生类中仍是公有成员B.公有继承时基类中的保护成员在派生类中仍是保护成员C.保护继承时基类中的公有成员在派生类中仍是公有成员 D.保护继承时基类中的保护成员在派生类中仍是保护成员解析:解析 保护继承时基类中的公有成员在派生类中是保护成员。28.下列程序的输出结果是 #includeiostreamh void main( )
40、double d=3.2; int x,y; x=12; y=(x+38)/50; cout y * d end1;(分数:1.00)A.3B.3,2C.0 D.307解析:解析 数据类型的默认转换。 【解题要点】本题中,先将 x 转换为浮点型再与 38 相加,得到结果与 50 相除。最后将得到的结果去掉小数位化成整型数据赋给 y。另外,值得注意的是,整型、实型、字符型数据间可以混合运算。在进行运算时,不同类型的数据先转换成同一类型,然后再进行运算。 【错解分析】如果认为执行 y=(x+38)/50 后 y 的值为 1 是错误的,此时 y 的值为 0。 【考点链接】x 为 int 型,将 12
41、 赋值给 x 时,x 的值为 1。 29.软件测试的目的是_。(分数:2.50)A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误 解析:解析 软件测试目的慨念理解题,本题的答案为 D。30.C+语言本身没有定义 I/O 操作,但 I/O 操作包含在 C+实现中。C+标准库 iostream 提供了基本的I/O 类。I/O 操作分别由两个类 istream 和_提供。(分数:2.50)A.fstreamB.iostreamC.ostream D.cin解析:解析 本题考查的是 C+标准库 iostream 提供的基本 I/O 类。istream 提供了向流中插
42、入数据的有关操作;ostream 提供了从流中提取数据的有关操作。31.语句 int*p= int i,j,s1=0; for(i=0;i2;i+) for(j=0;j2;j+) if(i=j) s1=s1+aij; couts1endl; 则该程序的输出结果为_。(分数:2.50)A.6B.7 C.8D.9解析:解析 程序中“static int a2=5,3,1,2;”定义了一个 2*2 的整型矩阵。两个 for 循环读取数组元素。“if(i=j)”语句中的条件是取矩阵的正对角线上的元素。对角线上的元素为 5,2,所以“s1=s1+aij”的计算结果为 7。33.若已定义了类 Vehicl
43、e,则下列派生类定义中,错误的是_。(分数:2.00)A.class Car:vehicle/*类体略*/;B.class Car:public car/*类体略*/; C.class Car:public Vehicle/*类体略*/);D.class Car:virtual public Vehicle/*类体略*/;解析:解析 类 Car 不能派生自它本身。34.有如下类定义: class Base int m; int n; public: Base(int m1,int n1):n(n1),m(m1) ; class Derived:public Base int q; public
44、: Derived(int m1,int n1,int q1):q(q1),Base(m1,n1); ; 在创建一个 Derived 对象时,数据成员 m、n 和 q 被初始化的顺序是_。(分数:2.50)A.m、n、q B.n、m、qC.q、m、nD.q、n、m解析:35.有如下类定义: class XX int xx; public: XX():xx(0)cout“A“;) XX(int n):xx(n)cout“B“; ; class YY:public XX int yy; public: YY():yy(0)coutyy; YY(int n):XX(n+1),yy(n)coutyy;
45、 YY(int m,int n):XX(m),yy(n)coutyy; ; 下列选项中,输出结果为 AO 的语句是_。(分数:2.00)A.YY y1(0,0);B.YY y2(1);C.YY y3(0);D.YY y4; 解析:解析 考查的是类的继承。选项 A 的执行结果为 B0,建立 YY 的对象 v1,首先调用其构造函数,YY 继承于 XX 所以先调用的为 XX 的构造函数,根据输入的参数可知输出 B,然后执行 YY 的构造函数输出0;同理,选项 B 的执行结果为 B1,选项 C 的执行结果为 B0。36.下列字符串中可以用作 C+标识符的是_。(分数:2.50)A.2009varB.gotoC.test-2009D._123 解析:解析 标识符主要由数字、字母、下画线组成,且首位必为字母或下画线,同时标识符不能是关键字。