1、二级 C+-116 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列数据结构中,能用二分法进行查找的是_。(分数:2.50)A.无序线性表B.线性链表C.二叉链表D.顺序存储的有序表2.下列叙述中,不属于设计准则的是_。(分数:2.50)A.提高模块独立性B.使模块的作用域在该模块的控制域中C.设计成多入口、多出口模块D.设计功能可预测的模块3.下列队列的描述中,正确的是_。(分数:2.50)A.队列属于非线性表B.队列在队尾删除数据C.队列按“先进后出”进行数据操作D.队列按“先进先出”进行数据操作4.对下列二叉树进行前序遍历的结果
2、为_。 (分数:2.50)A.ABCDEFGHB.ABDGEHCFC.GDBEHACFD.GDHEBFCA5.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。(分数:2.50)A.冒泡排序为 n(n-1)/2B.简单插入排序为 nC.希尔排序为 nD.快速排序为 n/26.为了使模块尽可能独立,要求_。(分数:2.50)A.内聚程度要尽量高,耦合程度要尽量强B.内聚程度要尽量高,耦合程度要尽量弱C.内聚程度要尽量低,耦合程度要尽量弱D.内聚程度要尽量低,耦合程度要尽量强7.下列选项中不属于软件生命周期开发阶段任务的是_。(分数:2.50)A.软件测试B.概要设
3、计C.软件维护D.详细设计8.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指_。(分数:2.50)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对9.在学校中,“班级”与“学生”两个实体集之间的联系属于_关系。(分数:2.50)A.一对一B.一对多C.多对一D.多对多10.软件调试的目的是_。(分数:2.50)A.发现错误B.改善软件的性能C.改正错误D.验证软件的正确性11.在公有派生时,派生类中定义的成员函数只能访问原基类的_。(分数:2.50)A.私有成员、保护成员和公有成员B.保护成员和私有成员C.公有成员
4、和保护成员D.公有成员和私有成员12.有如下定义: int b10=1,2,3,4,5,6,7,8,9,10,*q=b; 则数值为 8 的表达式是_。(分数:2.50)A.*q+8B.*(q+7)C.*q+=8D.q+713.下面的符号中可以用作 C+标识符的是_。(分数:2.50)A.3testB.fccotherC.elseD.radius14.下列程序执行后,输出的结果是_。 int x=-5,y=0; while(+x) y+; coutyendl;(分数:2.50)A.1B.2C.4D.515.有如下类声明: class TestClass int n; public: TestCl
5、ass(int i=0):n(i) void setValue(int n0); ; 下面关于 setValue 成员函数的实现中,正确的是_。(分数:2.50)A.TestClass:setValue(int n0)n=n0;B.void TestClass:setValue(int n0)n=n0;C.void setValue(int n0)n=n0;D.setValue(int n0)n=n0;16.下面关于常成员函数的说法中正确的是_。(分数:2.50)A.常成员函数不能修改任何的数据成员B.常成员函数只能修改一般的数据成员C.常成员函数只能修改常数据成员D.常成员函数只能通过常对象
6、来调用17.下面的函数调用为: fun(x+y,3,min(n-1,y)则 fun 的实参个数是_。(分数:2.50)A.3B.4C.5D.618.下面关于虚函数的描述中,正确的是_。(分数:2.50)A.基类中利用 virtual 关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加 virtual来说明B.虚函数是非成员函数C.虚函数是 static 类型的成员函数D.派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型19.有如下程序: #includeiostream using namespace std; class Base protected: Base(
7、)cout“Base“; Base(char c)coutc; ; class Derived:public Base public: Derived(char c)coutc; ; int main() Derived d(“Derived“); return 0; 执行这个程序屏幕上将显示输出_。(分数:2.50)A.DerivedB.DerivedBaseC.BaseDerivedD.DerivedDerived20.有如下程序: #includeiostream using namespace std; int main() cout.fill(“*“); cout.width(6);
8、 cout.fill(“#“); cout888endl; return 0; 的执行结果是_。(分数:2.50)A.#888B.888#C.*888D.888*21.假定一个类的构造函数为 A(int aa,int bb)a=aa-;b=a*bb;,则执行 A x(4,5);语句后,x.a 和x.b 的值分别为_。(分数:2.50)A.3 和 15B.5 和 4C.4 和 20D.20 和 522.在类中说明的成员可以使用关键字的是_。(分数:2.50)A.publicB.externC.cpuD.register23.下列不能作为类的成员的是_。(分数:2.50)A.自身类对象的指针B.自
9、身类对象C.自身类对象的引用D.另一个类的对象24.使用地址作为实参传给形参,下列说法正确的是_。(分数:2.50)A.实参是形参的备份B.实参与形参无联系C.形参是实参的备份D.参与形参是同一对象25.下列程序的输出结果是_。 #includeiostream.h void main() int n3=10,20,30,40,50,60;int(*p)3; p=n;coutp00“,“*(p0+1)“,“(*p)2endl;(分数:2.50)A.10,30,50B.10,20,30C.20,40,60D.10,30,6026.设程序如下: #includeiostream using nam
10、espace std; int main() int *p,*q,r=10; q= p= cout*p+1endl; return 0; 以上程序的输出结果是_。(分数:2.50)A.P 的地址B.r 的地址C.11D.运行错误27.下面关于函数模板的表述中不正确的是_。(分数:2.50)A.类模板的成员函数都是模板函数B.类模板本身在编译过程中不会产生任何代码C.类模板只能有虚拟类型的参数D.用类模板定义一个对象时,实参不能省略28.下面类的声明中的几个语句,正确的是(设定语句是主函数中的语句)_。 class TestClass private: int data; public: Tes
11、tClass(int g_data) data=g_data; void show()coutdataendl; ;(分数:2.50)A.TestClass *p;B.TestClass m;C.TestClass.data=8;D.TestClass.show();29.类中的一个字符指针成员指向具有 m 个字节的存储空间时,它所能存储的字符串的最大长度为_。(分数:2.50)A.m-2B.m-1CmD.m+130.有如下程序: #includeiostream using namespace std; class TestClass static int i; public: TestCl
12、ass ()i+; TestClass()i-; static int getVal()return i; ; int TestClass:i=0; void f()TestClass obj2;coutobj2.getVal(); int main() TestClass obj1; f(); TestClass * obj3=new TestClass;coutobj3-getVal(); delete obj3;coutTestClass:getVal(); return 0; 程序的输出结果是_。(分数:2.50)A.232B.221C.222D.23131.下面关于派生类的描述中错误
13、的是_。(分数:2.50)A.派生类中至少有一个基类B.一个派生类可以作为另一个派生类的基类C.派生类只继承了基类中的公有成员和保护成员D.派生类的缺省继承方式是私有32.有如下程序: #includeiostream using namespace std; class TlestClass int n; public: TestClass(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() TestClass p(5); const TestClass q(6); coutp.get()q.get();
14、 return 0; 执行后的输出结果是_。(分数:2.50)A.55B.57C.75D.7733.下列关于抽象类的表述中正确的是_。(分数:2.50)A.派生类必须要实现作为基类的抽象类中的纯虚函数B.抽象类的成员函数至少有一个没实现C.抽象类不可能用来定义对象D.派生类不能成为抽象类34.执行下列语句: #includeiostream using namespace std; int main() int x=3; if(x=5) coutx+endl; else coutxendl; return 0; 程序的输出是_。(分数:2.50)A.3B.4C.5D.635.假定 TestCl
15、ass 为一个类,则该类的拷贝构造函数的声明语句为_。(分数:2.50)A.TestClass(TestClass x)B.TestClass void swap(int x,int y) int temp=x; x=y; y=temp; cout“x=“x“,y=“yendl; int main() int x=3,y=2; swap(x,y); cout“x=“x“,y=“yendl; return 0; (分数:2.50)A.x=3,y=2x=3,y=2B.x=2,y=3x=3,y=2C.x=2,y=3x=2,y=3D.x=3,y=2x=2,y=339.在每个 C+程序中必须有且仅有一个
16、_。(分数:2.50)A.函数B.主函数C.预处理指令D.语句40.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; ; class Bpublic:B()cout“B“; class C:public A B b; public: C()cout“C“; ; int main()C obj;return 0; 执行后的输出结果是_。(分数:2.50)A.ABCB.BACC.ACBD.CBA二级 C+-116 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100
17、.00)1.下列数据结构中,能用二分法进行查找的是_。(分数:2.50)A.无序线性表B.线性链表C.二叉链表D.顺序存储的有序表 解析:解析 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。2.下列叙述中,不属于设计准则的是_。(分数:2.50)A.提高模块独立性B.使模块的作用域在该模块的控制域中C.设计成多入口、多出口模块 D.设计功能可预测的模块解析:解析 大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设
18、计成单入口、单出口的模块;设计功能可预测的模块。3.下列队列的描述中,正确的是_。(分数:2.50)A.队列属于非线性表B.队列在队尾删除数据C.队列按“先进后出”进行数据操作D.队列按“先进先出”进行数据操作 解析:解析 队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。4.对下列二叉树进行前序遍历的结果为_。 (分数:2.50)A.ABCDEFGHB.ABDGEHCF C.GDBEHACFD.GDHEBFCA解析:解析 遍历就是不重复地访问二叉树的所有结点
19、。二叉树遍历的方法有 3 种:前序遍历、中序遍历和后序遍历。记住 3 种遍历的顺序: 前序,访问根按前序遍历左子树按前序遍历右子树。 中序,按中序遍历左子树访问根按中序遍历右子树。 后序,按后序遍历左子树按后序遍历右子树访问根。 所以对该二叉树的中序遍历结果为 ABDGEHCF。5.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。(分数:2.50)A.冒泡排序为 n(n-1)/2 B.简单插入排序为 nC.希尔排序为 nD.快速排序为 n/2解析:解析 在最坏情况下,冒泡排序所需要的比较次数为 n(n-1)/2;简单插入排序所需要的比较次数为 n(n-1)/2
20、;希尔排序所需要的比较次数为 O(n 1.5 );堆排序所需要的比较次数为 O(nlog 2 n)。6.为了使模块尽可能独立,要求_。(分数:2.50)A.内聚程度要尽量高,耦合程度要尽量强B.内聚程度要尽量高,耦合程度要尽量弱 C.内聚程度要尽量低,耦合程度要尽量弱D.内聚程度要尽量低,耦合程度要尽量强解析:解析 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块
21、内的内聚性,有利于提高模块的独立性。7.下列选项中不属于软件生命周期开发阶段任务的是_。(分数:2.50)A.软件测试B.概要设计C.软件维护 D.详细设计解析:解析 软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。8.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指_。(分数:2.50)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对 解析:解析 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。所以选项 A,选项 B 和
22、选项 C 都不正确。9.在学校中,“班级”与“学生”两个实体集之间的联系属于_关系。(分数:2.50)A.一对一B.一对多 C.多对一D.多对多解析:解析 一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。10.软件调试的目的是_。(分数:2.50)A.发现错误B.改善软件的性能C.改正错误 D.验证软件的正确性解析:解析 在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。11.在公有派生时,派生类中定义的成员函数只能访问原基类的_。(分数:2.50)A.私有成员、保护成员和公有成员B.保护成员和私有成
23、员C.公有成员和保护成员 D.公有成员和私有成员解析:解析 派生类中的成员,一部分是从基类继承来的,另一部分是自己定义的新成员,所有的这些成员也分为公有、私有和保护三种访问权限。其中,从基类继承下来的全部成员构成派生类的基类,这部分的私有成员是派生类不能直接访问的,而公有成员和保护成员则是派生类可以直接访问的,但它们在派生类中的访问属性随着派生类对基类的继承方式而改变。12.有如下定义: int b10=1,2,3,4,5,6,7,8,9,10,*q=b; 则数值为 8 的表达式是_。(分数:2.50)A.*q+8B.*(q+7) C.*q+=8D.q+7解析:解析 数组的下标是从 0 到数组
24、的长度减 1。*(p+i)是取数组的第 i+1 个元素,即下标为 i 的元素。因此*(p+7)取数组的第八个元素,即元素 8。13.下面的符号中可以用作 C+标识符的是_。(分数:2.50)A.3testB.fccotherC.elseD.radius 解析:解析 C+标识符是以字母、下划线开头的,由字母、数字及下划线组成的,不与关键字相同的字符串。选项 C 中 else 为关键字。14.下列程序执行后,输出的结果是_。 int x=-5,y=0; while(+x) y+; coutyendl;(分数:2.50)A.1B.2C.4 D.5解析:解析 循环条件是+x,在 c+中,对于非 0 值
25、全都为真,0 代表假。x 的初始值为-5,所以循环能进行 4 次。15.有如下类声明: class TestClass int n; public: TestClass(int i=0):n(i) void setValue(int n0); ; 下面关于 setValue 成员函数的实现中,正确的是_。(分数:2.50)A.TestClass:setValue(int n0)n=n0;B.void TestClass:setValue(int n0)n=n0; C.void setValue(int n0)n=n0;D.setValue(int n0)n=n0;解析:解析 C+中类成员函数的
26、实现形式为: 返回类型 类名:成员函数名(参数列表)代码块16.下面关于常成员函数的说法中正确的是_。(分数:2.50)A.常成员函数不能修改任何的数据成员 B.常成员函数只能修改一般的数据成员C.常成员函数只能修改常数据成员D.常成员函数只能通过常对象来调用解析:解析 C+中使用 const 关键字来说明函数称为常成员函数,常成员函数不能更新对象中的数据成员。17.下面的函数调用为: fun(x+y,3,min(n-1,y)则 fun 的实参个数是_。(分数:2.50)A.3 B.4C.5D.6解析:解析 在 C+中,形参列表是由逗号分开的,分别说明函数的各个参数。在 fun()函数中它包括
27、三个形参:x+y,3 和 min(n-1,y);当调用一个函数时,实参与形参一对一匹配,所以实参个数也是 3个。18.下面关于虚函数的描述中,正确的是_。(分数:2.50)A.基类中利用 virtual 关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加 virtual来说明 B.虚函数是非成员函数C.虚函数是 static 类型的成员函数D.派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型解析:解析 虚函数是非 static 类型的成员函数,基类中可以利用 virtual 关键字来声明虚函数,派生类中定义相同原型函数时可不必加 virtual 说明,直接重写基类中
28、的函数。在派生类中的虚函数必须与基类中的虚函数具有相同的参数个数与类型。19.有如下程序: #includeiostream using namespace std; class Base protected: Base()cout“Base“; Base(char c)coutc; ; class Derived:public Base public: Derived(char c)coutc; ; int main() Derived d(“Derived“); return 0; 执行这个程序屏幕上将显示输出_。(分数:2.50)A.DerivedB.DerivedBaseC.BaseD
29、erived D.DerivedDerived解析:解析 派生类 Derived 由基类 Base 公有派生,在派生类构造函数声明时系统会自动调用基类的缺省构造函数。调用 Derivedd(“Derived“);后,执行类 Derived 构造函数的 Derived(char c),系统自动调用基类的缺省构造函数 Base(),输出字母 Base;再执行派生类的构造函数 Derived(char c),输出字母 Derived。20.有如下程序: #includeiostream using namespace std; int main() cout.fill(“*“); cout.widt
30、h(6); cout.fill(“#“); cout888endl; return 0; 的执行结果是_。(分数:2.50)A.#888 B.888#C.*888D.888*解析:解析 C+在流操作中,利用 cout 对象的 width 属性设置输出字符的宽度,用 fill 函数来设置需要填充的字符。题目程序中,首先设置填充字符为*,输出宽度为 6,但在输出前又设置了填充字符为#,所以在输出时,其填充字符为#,由于 888 不足 6 个字符,所以在前面以三个“#”来填充。21.假定一个类的构造函数为 A(int aa,int bb)a=aa-;b=a*bb;,则执行 A x(4,5);语句后,
31、x.a 和x.b 的值分别为_。(分数:2.50)A.3 和 15B.5 和 4C.4 和 20 D.20 和 5解析:解析 因为 aa 后减,所以 a=4;b 的值与 a、bb 相关,b=4*5=20,与 aa 没有任何关系。22.在类中说明的成员可以使用关键字的是_。(分数:2.50)A.public B.externC.cpuD.register解析:解析 extern 用于声明外部变量的,register 声明寄存器类型变量,无 cpu 类型。它们都不能声明类成员。public 声明为公有访问权限。23.下列不能作为类的成员的是_。(分数:2.50)A.自身类对象的指针B.自身类对象
32、C.自身类对象的引用D.另一个类的对象解析:解析 类的定义,如果有自身类对象,会使其循环定义,选项 B 错误。在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用,类中可以有另一个类的对象,即成员对象。24.使用地址作为实参传给形参,下列说法正确的是_。(分数:2.50)A.实参是形参的备份B.实参与形参无联系C.形参是实参的备份D.参与形参是同一对象 解析:解析 地址作为实参,表示实参与形参代表同一个对象。如果实参是数值,形参也是普通变量,此时形参是实参的备份。25.下列程序的输出结果是_。 #includeiostream.h void main() int n3=10,2
33、0,30,40,50,60;int(*p)3; p=n;coutp00“,“*(p0+1)“,“(*p)2endl;(分数:2.50)A.10,30,50B.10,20,30 C.20,40,60D.10,30,60解析:解析 如果数组元素都是相同类型的指针,则称这个数组为指针数组。指针数组一般用于处理二维数组。声明的格式为:数据类型(*变量名)元素个数。p 表示指向数组 n 的行指针,初始化“(*p)3=n;”,地址的等价形式:p+i、pi、*(p+i)都表示数组第 i+1 行的第 1 个元素的首地址。*(p+i)+j、pi+j、 int main() int *p,*q,r=10; q=
34、p= cout*p+1endl; return 0; 以上程序的输出结果是_。(分数:2.50)A.P 的地址B.r 的地址C.11 D.运行错误解析:解析 p 为一个二级指针,其存放的是指针变量 q 的地址,而 q 存放的又是 r 的地址。故式子*p相当于对 r 的引用。所以最后输出的结果为 11。27.下面关于函数模板的表述中不正确的是_。(分数:2.50)A.类模板的成员函数都是模板函数B.类模板本身在编译过程中不会产生任何代码C.类模板只能有虚拟类型的参数 D.用类模板定义一个对象时,实参不能省略解析:解析 类模板本身在编译时是不会产生代码的,只有在其实例化以后才产生代码。定义一个对象
35、时,不能省略其实参。28.下面类的声明中的几个语句,正确的是(设定语句是主函数中的语句)_。 class TestClass private: int data; public: TestClass(int g_data) data=g_data; void show()coutdataendl; ;(分数:2.50)A.TestClass *p; B.TestClass m;C.TestClass.data=8;D.TestClass.show();解析:解析 C+中,若没有类的显式声明构造函数则系统会为其提供一个默认的构造函数,若提供了构造函数则会将系统提供的默认的构造函数覆盖。调用构造函
36、数时,实参必须与形参匹配。但是如果声明一个对象指针时,不是定义一个对象,不调用对象的构造函数。29.类中的一个字符指针成员指向具有 m 个字节的存储空间时,它所能存储的字符串的最大长度为_。(分数:2.50)A.m-2B.m-1 CmD.m+1解析:解析 在 C+中,字符串以“/0“作为字符串结束的标志,所以个数为 m-1。30.有如下程序: #includeiostream using namespace std; class TestClass static int i; public: TestClass ()i+; TestClass()i-; static int getVal()r
37、eturn i; ; int TestClass:i=0; void f()TestClass obj2;coutobj2.getVal(); int main() TestClass obj1; f(); TestClass * obj3=new TestClass;coutobj3-getVal(); delete obj3;coutTestClass:getVal(); return 0; 程序的输出结果是_。(分数:2.50)A.232B.221 C.222D.231解析:解析 由于 i 是类 TestClass 的静态成员,该成员被类的所有实例共享。当定义 obj1 时,系统自动调用
38、构造函数 TestClass(),i 的值将加 1;调用函数 f()时,在定义 obj2 时系统会自动调用构造函数TestClass(),i 的值将再加 1;调用 dbj2.getVal();后,将 i 的值输出,输出值为 2;当调用函数 f()即将结束时,系统自动调用析构函数TestClass(),i 的值将减 1;当定义 obj3 时,系统自动调用构造函数 TestClass(),i 的值将加 1,调用 coutobj3-getVal();后,将 i 的值输出,输出值为 2;调用delete obj3 后将执行 TestClass 的析构函数TestClass(),执行后,i 的值将减1,
39、TestClass:getVal()为类的一个静态成员函数,其作用是返回私有静态成员变量 i 的值 1。31.下面关于派生类的描述中错误的是_。(分数:2.50)A.派生类中至少有一个基类B.一个派生类可以作为另一个派生类的基类C.派生类只继承了基类中的公有成员和保护成员 D.派生类的缺省继承方式是私有解析:解析 继承方式有公有继承、私有继承和保护继承 3 种,缺省的继承方式是私有继承。派生类从基类继承所有的成员,但是对于基类的私有成员派生类是不可直接访问的。32.有如下程序: #includeiostream using namespace std; class TlestClass int
40、 n; public: TestClass(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() TestClass p(5); const TestClass q(6); coutp.get()q.get(); return 0; 执行后的输出结果是_。(分数:2.50)A.55B.57 C.75D.77解析:解析 C+中对常对象的成员函数调用,将自动调用其常成员函数,程序中调用原型为“int get()const;“的函数,对于非常对象将调用原型为“int get();“的函数。因为首先用 5 对对象 p
41、 进行了初始化,所以执行 p.get()时直接返回 5,而对于常对象则以 6 对 q 进行初始化。在调用 q.get()时,将调用原型为“int get()const;“的函数,该函数将返回 n+1,第二个输出应为 7,所以本题答案为 57。33.下列关于抽象类的表述中正确的是_。(分数:2.50)A.派生类必须要实现作为基类的抽象类中的纯虚函数B.抽象类的成员函数至少有一个没实现C.抽象类不可能用来定义对象 D.派生类不能成为抽象类解析:解析 C+中拥有纯虚函数的类称为抽象类。抽象类不能用来定义对象。如果一个抽象类的派生类没有重定义来自基类的某个纯虚函数,则该函数在派生类中仍是纯虚函数,该类
42、仍为抽象类。34.执行下列语句: #includeiostream using namespace std; int main() int x=3; if(x=5) coutx+endl; else coutxendl; return 0; 程序的输出是_。(分数:2.50)A.3B.4C.5 D.6解析:解析 if条件语句 1 else 语句 2,语句的执行过程是:首先判断条件是否为真(不为 0),为真则执行语句 1,否则执行语句 2。题目中的条件是 x=5,意思是把 5 赋予变量 x,它将 x 置 5 且返回一个真值。35.假定 TestClass 为一个类,则该类的拷贝构造函数的声明语句
43、为_。(分数:2.50)A.TestClass(TestClass x)B.TestClass void swap(int x,int y) int temp=x; x=y; y=temp; cout“x=“x“,y=“yendl; int main() int x=3,y=2; swap(x,y); cout“x=“x“,y=“yendl; return 0; (分数:2.50)A.x=3,y=2x=3,y=2B.x=2,y=3x=3,y=2 C.x=2,y=3x=2,y=3D.x=3,y=2x=2,y=3解析:解析 C+中默认的参数传递是值传递,也就是将实参的副本传递给被调用函数的形参,被
44、调用的函数中对形参的任何改动都不会影响实参。39.在每个 C+程序中必须有且仅有一个_。(分数:2.50)A.函数B.主函数 C.预处理指令D.语句解析:解析 在每一个 C+程序中必须有且只有一个主函数,每个程序的执行都是从主函数的开始。40.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; ; class Bpublic:B()cout“B“; class C:public A B b; public: C()cout“C“; ; int main()C obj;return 0; 执行后的输出结果是_。(分数:2.50)A.ABC B.BACC.ACBD.CBA解析:解析 C+程序中的执行子类,首先执行基类的构造函数,然后执行数据成员类的构造函数,最后执行子类本身的构造函数,所以输出结果为 ABC。