1、二级 C+-186 及答案解析(总分: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.栈是特殊
2、的线性表,只能在一端插入元素,而在另一端删除元素4.下列叙述中正确的是_。(分数:2.50)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率5.下列描述中正确的是_。(分数:2.50)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题6.在软件设计中,不属于过程设计工具的是_。(
3、分数:2.50)A.PDL(过程设计语言)B.PAD 图C.N-S 图D.DFD 图7.下列叙述中正确的是_。(分数:2.50)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令8.数据库设计的根本目标是要解决_。(分数:2.50)A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护9.设有如下关系表: (分数:2.50)A.T=RSB.T=RSC.T=RSD.T=R/S10.数据库系统的核心是_。(分数:2.50)A.数据模型B.数据库管理系统C.数据库D.数据库管理员11.下列关于
4、C+函数的叙述中,正确的是_。(分数:2.50)A.每个函数至少要具有一个参数B.每个函数都必须返回一个值C.函数在被调用之前必须先声明D.函数不能自己调用自己12.下列关于类和对象的叙述中,错误的是_。(分数:2.50)A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系13.在 C+中,用于实现运行时多态性的是_。(分数:2.50)A.内联函数B.重载函数C.模板函数D.虚函数14.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载,可以定义新的运算符B.有的运算符只能作为成员函数重载C.若重载运算符
5、+,则相应的运算符函数名是+D.重载一个二元运算符时,必须声明两个形参15.下列关于模板的叙述中,错误的是_。(分数:2.50)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用“”括起来的部分是模板的形参表C.类模板不能有数据成员D.在一定条件下函数模板的实参可以省略16.对于语句“coutendlx;”中的各个组成部分,下列叙述中错误的是_。(分数:2.50)A.“cout”是一个输出流对象B.“endl”的作用是输出回车换行C.“x”是一个变量D.“”称作提取运算符17.下列字符串中,正确的 C+标识符是_。(分数:2.50)A.foo-1B.2bC.newD.25
6、618.已知枚举类型定义语句为: enum TokenNAME, NUNBER, PLUS=5, HINUS, PRINT=10; 则下列叙述中错误的是_。(分数:2.50)A.枚举常量 NAME 的值为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 1019.执行以下语句序列: int i=0; while(i25)i+=3; couti; 输出结果是_。(分数:2.50)A.24B.25C.27D.2820.要定义一个具有 5 个元素的一维数组 vect,并使其各元素的初值依次是 30, 50, -88, 0 和 0,则下列定
7、义语句中错误的是_。(分数:2.50)A.int vect=30, 50, -88;B.int vect=30, 50, -88, 0, 0;C.int vect5=30, 50, -88;D.int vect5=30, 50, -88, 0, 0;21.有如下程序: #includeiostream void fun(int x=y; y=t; int main() int a2=23, 42; fun(a1, a0); std:couta0“, “a1 std:endl; return 0; 执行后的输出结果是_。(分数:2.50)A.42, 42B.23, 23C.23, 42D.42,
8、 2322.有如下类声明: class Foo int bar; ; 则 Foo 类的成员 bar 是_。(分数:2.50)A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数23.有如下类声明: class MyBASE int k; public: void set(int n)k=n; int get()constreturn k; ; class MyDERIVED:protected MyBASE protected: int j; public: void set(int m, int n)MyBASE:set(m); j=n; int get()constreturn
9、 MyBASE:get() +j; ; 则类 MyDERIVED 中保护的数据成员和成员函数的个数是_。(分数:2.50)A.4B.3C.2D.124.已知在一个类体中包含如下函数原型: VOLUME operator-(VOLbrME)const; 下列关于这个函数的叙述中,错误的是_。(分数:2.50)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值25.有如下函数模板定义: templateclass T T func(T x, T y) return x*x+y*y; 在下列对 func 的调用中,错误
10、的是_(分数:2.50)A.func(3, 5);B.func(3.0, 5.5);C.func(3, 5.5);D.func(3, 5.5);26.有如下程序: #includeiostream using namespace std; int main() cout.fill(“*“); cout.width(6); cout.fill(“#“); cout123endl; return 0; 执行后的输出结果是_。(分数:2.50)A.#123B.123#C.*123D.123*27.在下列函数原型中,可以作为类 AA 构造函数的是_。(分数:2.50)A.void AA(int);B.
11、int AA();C.AA(int)const;D.AA(int);28.下列关于 this 指针的叙述中,正确的是_。(分数:2.50)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针29.有如下程序: #includeiostream using namespace std; class Test public: Test()n+=2; Test()n=3; static int:getNum()return n; private: static int n; ; int Test:
12、n=1; int main() Test* p=new Test; delete p; cout“n=“Test:getNuan()endl; return 0; 执行后的输出结果是_。(分数:2.50)A.n=0B.n=1C.n=2D.n=330.有如下程序: #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; 执行后
13、的输出结果是_。(分数:2.50)A.CBAB.BACC.ACBD.ABC31.有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a, int b); ; 在构造函数 XB 的下列定义中,正确的是_。(分数:2.50)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),
14、XB(b)32.有如下程序: #includeiostream using namespace std; class BASE public: BASE()cout“BASE“; ; class DERIVED:public BASE public: DERIVED()cout“DERIVED“; ; int main() DERIVED x; return 0; 执行后的输出结果是_。(分数:2.50)A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE33.在表达式 x+y*z 中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的
15、是_。(分数:2.50)A.operator+有两个参数,operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数D.operator+有一个参数,operator*有一个参数34.下面关于 C+流的叙述中,正确的是_。(分数:2.50)A.cin 是一个输入流对象B.可以用 ifstream 定义一个输出流对象C.执行语句序列“char*y=“PQMN“; couty;”,将输出字符串”PQMN”的地址D.执行语句序列“char x80; cin.getline(x, 80);”时,若输入“Hap
16、py new year”,则 x 中的字符串是“Happy“35.有如下程序: #includeiostream using namespace std; class AA int n; public: AA(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() AA a(5); const AA b(6); couta.get()b.get(); return 0; 执行后的输出结果是_。(分数:2.50)A.55B.57C.75D.7736.在下列函数原型中,可以作为类 AA 构造函数的是_。(分数:2.
17、50)A.void AA(int);B.int AA();C.AA(int)constD.AA(int);37.有如下类定义: class AA int a; public: int geRef()constreturn / int getValue()constreturn a;/ void set(int n)consta=n; / friend void show(AA aa)constcouta; / 其中的四个函数定义中正确的是_。(分数:2.50)A.B.C.D.38.以下关键字不能用来声明类的访问权限的是_。(分数:2.50)A.publicB.staticC.protected
18、D.private39.有如下程序: #includeiostream using namespace std; class Point public: static int number; public: Point() number+; Point() number-; ; int Point:number=0; void main() Point *ptr; Point A, B; Point *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; deleteptr; 程序的输出结果是_。(分数:2.50
19、)A.3B.4C.6D.740.下面程序的打印结果是_。 #includeiostream using namespace std; class A private: int x, y; public: void set(int i, int j) x=i; y=j; int get_y()return y; ; class box private: int length, width; A label; public: void set(int l, int w, int s, int p) length=l; width=w; label.set(s, p); int get_area()
20、return length*width; ; int main() box small; small.set(2, 4, 1, 35); coutsmall.get_area()endl; return 0; (分数:2.50)A.8B.4C.35D.70二级 C+-186 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试 D.程序经调试改错后不必进行再测试解析:解析 程序调式修改后可能引入新的错误所以必须进
21、行重新测试,以保证程序的正确性。2.下列数据结构中,能用二分法进行查找的是_。(分数:2.50)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:解析 二分法是通过每次将待查元素与线性表的中间项比较,逐步缩小查找范围,直到查找结束的查找方法,因此只适用于顺序存储的有序线性表。3.下列关于栈的描述正确的是_。(分数:2.50)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素解析:解析 可以根据栈的定义得到答案。栈是一种“后进先出”的线性表,只能
22、在一端进行插入或删除操作。4.下列叙述中正确的是_。(分数:2.50)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 解析:解析 数据结构包括逻辑结构和存储结构。逻辑结构表示数据间逻辑关系的数据结构,存储结构是指数据在计算机存储空间中的物理关系,一个逻辑数据结构可以有多种储存结构,而不同的存储结构的数据处理效牢是不同的。5.下列描述中正确的是_。(分数:2.50)A.软件工程只是解决软件项目的管理问题B.
23、软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题解析:解析 软件工程的定义是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。其主要强调了软件开发过程中应用工程化原则的重要性。6.在软件设计中,不属于过程设计工具的是_。(分数:2.50)A.PDL(过程设计语言)B.PAD 图C.N-S 图D.DFD 图 解析:解析 DFD 图是描述数据处理过程的工具。7.下列叙述中正确的是_。(分数:2.50)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交
24、付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:解析 软件交付使用并不代表软件生命周期的终结,还需要对软件进行不断的维护,根据新提出的需求进行必要且可能的扩充和删改。8.数据库设计的根本目标是要解决_。(分数:2.50)A.数据共享问题 B.数据安全问题C.大量数据存储问题D.简化数据维护解析:解析 数据库发计的基本任务是根据用户对象的信息需求、处理需求和数据库的支持环境设计出数据模式,解决数据的共享问题。9.设有如下关系表: (分数:2.50)A.T=RSB.T=RS C.T=RSD.T=R/S解析:解析 10.数据库系统的核心是_。(分数:2.50)A.数据模型B.数据
25、库管理系统 C.数据库D.数据库管理员解析:解析 数据模型是对数据特征的抽象,从抽象层次上描述了系统的静态特征、动态特征和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架,包括数据结构、数据操作和数据约束三部分;数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等;数据库管理员是对数据库进行规划、设计、维护、监视等管理专业人才;数据库系统由数据库、数据库管理系统、数据库管理员、硬件平台和软件平台五部分组成,这五部分构成以数据库为核心的完整的运行实体。11.下列关于 C+函数的叙述中,正确的是_。(分数:2.50)A.每个函数
26、至少要具有一个参数B.每个函数都必须返回一个值C.函数在被调用之前必须先声明 D.函数不能自己调用自己解析:解析 在 C+中,函数并不一定需要参数,即形参可以为空,有默认形参情况下也可以没有实参,选项 A 是不对的。类中的构造函数和析构函数就没有返回值,选项 B 错误。函数也可以调用自己,即递归调用。12.下列关于类和对象的叙述中,错误的是_。(分数:2.50)A.一个类只能有一个对象 B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系解析:解析 在面向对象设计中,类是同一种对象的抽象,而不是一个对象的抽象,一个类可以有多个对象。对象是类的具体实例。就
27、像数据类型和变量的关系,一个数据类型可以定义多个变量,一个变量却只能是一种数据类型。13.在 C+中,用于实现运行时多态性的是_。(分数:2.50)A.内联函数B.重载函数C.模板函数D.虚函数 解析:解析 C+支持两种多态性:编译时的多态性和运行时的多态性。其中,用于实现编译时多态性的是函数重载、运算符重载和模板等,用于实现运行时的多态性的是虚函数。14.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载,可以定义新的运算符B.有的运算符只能作为成员函数重载 C.若重载运算符+,则相应的运算符函数名是+D.重载一个二元运算符时,必须声明两个形参解析:解析 运算符重载
28、是针对 C+中原有运算符进行的,不可能通过重载创造出新的运算符,相应的运算符函数名应该是 operateor+。运算符重载函数作为成员函数时,第一个操作数就是对象本身,并不现实出现在参数列表中,故对于二元运算符,参数表中只有一个参数(第二个操作数),故答案是 B。15.下列关于模板的叙述中,错误的是_。(分数:2.50)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用“”括起来的部分是模板的形参表C.类模板不能有数据成员 D.在一定条件下函数模板的实参可以省略解析:解析 声明一个模板的格式:templete模板形参表声明函数声明,故 A、B 是正确的,在调用模板函数时,
29、如果编译系统从模板函数的实参表中得到的信息已经能够判断部分或全部虚拟类型参数所对应的实际类型,而且它们又正好是模板形参中最后的若干个参数,则在模板实参表中可以省略这几个参数,D 正确。类模板可以有数据成员,数据成员的类型可以是虚拟类型,也可以是具体类型,选项 C错误。16.对于语句“coutendlx;”中的各个组成部分,下列叙述中错误的是_。(分数:2.50)A.“cout”是一个输出流对象B.“endl”的作用是输出回车换行C.“x”是一个变量D.“”称作提取运算符 解析:解析 “”为插入运算符,“”为提取运算符。17.下列字符串中,正确的 C+标识符是_。(分数:2.50)A.foo-1
30、B.2bC.newD.256 解析:解析 在 C+中,标识符只能使用字母、数字、下画线,其中数字不能是首字符,关键字也不能为标识符,故答案 D 是正确的。18.已知枚举类型定义语句为: enum TokenNAME, NUNBER, PLUS=5, HINUS, PRINT=10; 则下列叙述中错误的是_。(分数:2.50)A.枚举常量 NAME 的值为 1 B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:解析 对于枚举类型变量的第一个常量的默认值是 0,在其他位置变量的值为前一变量的值加 1,直到下一个赋了值的枚举值或结束
31、。故 A 是错的。19.执行以下语句序列: int i=0; while(i25)i+=3; couti; 输出结果是_。(分数:2.50)A.24B.25C.27 D.28解析:解析 i 的初始值为 0,每循环一次 i 就加 3,直到加到 27,跳出循环,然后输出,答案为 C。20.要定义一个具有 5 个元素的一维数组 vect,并使其各元素的初值依次是 30, 50, -88, 0 和 0,则下列定义语句中错误的是_。(分数:2.50)A.int vect=30, 50, -88; B.int vect=30, 50, -88, 0, 0;C.int vect5=30, 50, -88;D
32、.int vect5=30, 50, -88, 0, 0;解析:解析 定义数组时,如果指定长度,则没有赋值的元素默认为 0,如果没有指定长度,初始时就必须写出所有元素。故 A 是错误的,它只有 3 个元素,不符合题意。21.有如下程序: #includeiostream void fun(int x=y; y=t; int main() int a2=23, 42; fun(a1, a0); std:couta0“, “a1 std:endl; return 0; 执行后的输出结果是_。(分数:2.50)A.42, 42B.23, 23 C.23, 42D.42, 23解析:解析 从 fun(
33、)函数的定义上看,第一个参数是地址引用,所以形参的改变也会改变实参,而第二个参数只是局部变量,不会影响实参,而 fun()的功能是交换数组中元素的值,所以 B 答案是正确的。22.有如下类声明: class Foo int bar; ; 则 Foo 类的成员 bar 是_。(分数:2.50)A.公有数据成员B.公有成员函数C.私有数据成员 D.私有成员函数解析:解析 函数声明时,函数名后必须带“”,故 bar 是数据成员,在类中,如果没有使用访问权限的话,默认是私有权限,故答案是 C。23.有如下类声明: class MyBASE int k; public: void set(int n)k
34、=n; int get()constreturn k; ; class MyDERIVED:protected MyBASE protected: int j; public: void set(int m, int n)MyBASE:set(m); j=n; int get()constreturn MyBASE:get() +j; ; 则类 MyDERIVED 中保护的数据成员和成员函数的个数是_。(分数:2.50)A.4B.3C.2 D.1解析:解析 基类的私有成员无论如何也不会在派生类中可见,公有成员和保护成员经过保护继承后将成为派生类的保护成员,但由于在派生类中定义了同名、同参数函数
35、,基类成员函数 get 的作用域不能达到派生类。set 的函数的参数不同,基类成员函数 set 在派生类中可以直接调用。因此答案是 C。24.已知在一个类体中包含如下函数原型: VOLUME operator-(VOLbrME)const; 下列关于这个函数的叙述中,错误的是_。(分数:2.50)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数D.这个函数不改变类的任何数据成员的值解析:解析 重载的运算符保持原有的操作数个数不变,“-”仍然是二元运算符,故 B 是错的。25.有如下函数模板定义: templateclass T T func(T
36、x, T y) return x*x+y*y; 在下列对 func 的调用中,错误的是_(分数:2.50)A.func(3, 5);B.func(3.0, 5.5);C.func(3, 5.5); D.func(3, 5.5);解析:解析 当从模板函数实参表获得的信息不一致时,模板实参不能省略。故 C 是错误的。26.有如下程序: #includeiostream using namespace std; int main() cout.fill(“*“); cout.width(6); cout.fill(“#“); cout123endl; return 0; 执行后的输出结果是_。(分数
37、:2.50)A.#123 B.123#C.*123D.123*解析:解析 cout.fill()函数表示设置填充字符,cout.width()函数时设置下一个数据的输出宽度的,先输出*,设置宽度为 6,然后用#代替*,再输出 123,数值输出默认是右对齐的,故答案 A 是正确的。27.在下列函数原型中,可以作为类 AA 构造函数的是_。(分数:2.50)A.void AA(int);B.int AA();C.AA(int)const;D.AA(int); 解析:解析 构造函数的作用是初始化数据成员,没有返回类型,而且常成员函数不能更新对象的数据成员,显然也不是构造函数,故答案 D 是正确的。2
38、8.下列关于 this 指针的叙述中,正确的是_。(分数:2.50)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针 解析:解析 this 指针只能在类的成员函数中使用,它指向正在被调用的对象。但静态成员函数和友元函数是没有 this 指针的。29.有如下程序: #includeiostream using namespace std; class Test public: Test()n+=2; Test()n=3; static int:getNum()return n; priva
39、te: static int n; ; int Test:n=1; int main() Test* p=new Test; delete p; cout“n=“Test:getNuan()endl; return 0; 执行后的输出结果是_。(分数:2.50)A.n=0 B.n=1C.n=2D.n=3解析:解析 静态数据成员初始化为 1,在创建对象指针时,调用构造函数执行 n+=2,n=3,在删除对象指针时,调用析构函数执行 n-=3,故 n=0。30.有如下程序: #includeiostream using namespace std; class A public: A()cout“A
40、“ ; class Bpublic:B()cout“B“; class C:public A B b; public: C()cout“C“; ; int main() C obj; return 0; 执行后的输出结果是_。(分数:2.50)A.CBAB.BACC.ACBD.ABC 解析:解析 根据派生类的执行顺序,首先执行基类 A 的构造函数 A(),输出 A,再执行派生类的成员对象 b 的构造函数 B,输出 B,最后执行派生类 C 的构造函数,输出 C,故最后结果是 D。31.有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB
41、:public XA int y; public: XB(int a, int b); ; 在构造函数 XB 的下列定义中,正确的是_。(分数:2.50)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)解析:解析 派生类构造函数的一般格式如下: 派生类名:派生类名(总参数表):基类名 1(参数表 1), 基类名 n(参数表 n), 成员对象名 1(参数表 n+1), 成员对象名
42、m(参数表 n+m) 派生类构造函数体 根据定义我们可得 B 项是正确的,其中 y(b)为初始化派生类成员 int y,XA(a)为显式调用基类构造函数。32.有如下程序: #includeiostream using namespace std; class BASE public: BASE()cout“BASE“; ; class DERIVED:public BASE public: DERIVED()cout“DERIVED“; ; int main() DERIVED x; return 0; 执行后的输出结果是_。(分数:2.50)A.BASEB.DERIVEDC.BASEDER
43、IVEDD.DERIVEDBASE 解析:解析 根据派生类析构函数的执行顺序,首先执行派生类的析构函数,再执行基类的析构函数,故选 D。33.在表达式 x+y*z 中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是_。(分数:2.50)A.operator+有两个参数,operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数 D.operator+有一个参数,operator*有一个参数解析:解析 运算符重载作为成员函数,第一个操作数就是对象本身,并不显式出现在参数
44、列表,运算符重载作为非成员函数,所有操作数必须出现在参数表中,故正确答案是 C。34.下面关于 C+流的叙述中,正确的是_。(分数:2.50)A.cin 是一个输入流对象 B.可以用 ifstream 定义一个输出流对象C.执行语句序列“char*y=“PQMN“; couty;”,将输出字符串”PQMN”的地址D.执行语句序列“char x80; cin.getline(x, 80);”时,若输入“Happy new year”,则 x 中的字符串是“Happy“解析:解析 cin 是 istream 类的对象,即输入流对象。ifstream 是输入文件流类,执行 C 中的语句输出的不是地址
45、,而是字符吕。getline()函数的功能是从流中读取多个字符包括空格,并且允许指定输入终止字符,默认为回车。35.有如下程序: #includeiostream using namespace std; class AA int n; public: AA(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() AA a(5); const AA b(6); couta.get()b.get(); return 0; 执行后的输出结果是_。(分数:2.50)A.55B.57 C.75D.77解析:解析 a.g
46、et()调用的 int get()return n;,b.get()调用的是 int get()constreturn n+1,const 是重载的标志,故答案选 B。36.在下列函数原型中,可以作为类 AA 构造函数的是_。(分数:2.50)A.void AA(int);B.int AA();C.AA(int)constD.AA(int); 解析:解析 构造函数的作用是对对象的数据成员进行赋值,没有返回类型,而且由于常成员函数不能更新对象的数据成员,显然也不可能作为构造函数。37.有如下类定义: class AA int a; public: int geRef()constreturn / int getValue()constreturn a;/ void set(int n)consta=n; / friend void show(AA aa)constcouta; / 其中的四个函数定义中正确的是_。(分数:2.50)A.B. C.