1、二级 C+分类模拟 272 及答案解析(总分:72.00,做题时间:90 分钟)一、选择题(总题数:40,分数:72.00)1.关于纯虚函数,下列表述中正确的是_。(分数:2.50)A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0;”结束C.派生类必须实现基类的纯虚函数D.含有纯虚函数的类不可能是派生类2.下列叙述中正确的是(分数:1.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令3.有如下类定义: Class MyClass public: _ priv
2、ate: int data; 若要为 MyClass 类重载流输入运算符,使得程序中可以“cinobj;”形式输入 MyClass 类的对象obj,则横线处的声明语句应为_。(分数:2.50)A.friend istreamB.friend istreamC.istreamD.istream4.数据库设计中反映用户对数据要求的模式是_。(分数:1.00)A.内模式B.概念模式C.外模式D.设计模式5.C+语言本身没有定义 I/O 操作,但 I/O 操作包含在 C+实现中。C+标准库 iostream 提供了基本的 I/O类。I/O 操作分别由两个类 istream 和_提供。(分数:2.50)
3、A.fstreamB.iostreamC.ostreamD.cin6.有如下程序: #includeiostream using namespace std; class Pair int m,n; public; Pair(int j,int k):m(j),n(k) int get()return m; int get() constreturn m+n; ); int main() Pair a(3,5); corist Pair b(3,5); couta.get()b.get(); return 0; 运行时的输出结果是_。(分数:1.00)A.33B.38C.83D.887.己知类
4、 X 是类 Y 的友元,类 Y 是类 Z 的友元,则 _。(分数:2.00)A.类 X 一定是类 Z 的友元B.类 Z 一定是类 X 的友元C.类 Z 的成员函数可以访问类 Y 的对象的任何成员D.类 K 的成员函数可以访问类 Y 的对象的任何成员8.对图书进行编目时,图书有如下属性:ISBN 书号,书名,作者,出版社,出版日期。能作为关键字的是_。(分数:2.50)A.ISBN 书号B.书名C.作者,出版社D.出版社,出版日期9.下列结构体类型说明和变量定义中正确的是_。(分数:2.50)A.typedef struct;int n;char c;REC;REC t1,t2;B.struct
5、 REC;int n;char c;REC t1,t2;C.typedef struct REC;int n=0;char c=“A“;t1,t2D.structint n;char c;REC;REC t1,t210.若有定义语句“int i=2,j=3;”,则表达式 i/j 的结果是_。(分数:1.00)A.0B.0.7C.0.66667D.0.6666666711.若已经声明了函数原型“bool fun(bool a,int b=0);”,则下列重载函数声明中正确的是_。(分数:1.00)A.bool fun(bool a=true,int b=0);B.int fun(bool a,i
6、nt );C.void fun(double a,int );D.void fun(bool a,int b=0);12.下面关于 C+流的叙述中,正确的是(分数:2.00)A.cin 是一个输入流对象B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char *y=“PQMN“; couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cin.getline(x,80);时,若键入 Happy new year 则 x 中的字符串是“Happy“13.下列关于保护成员的说法中,正确的是 _ 。(分数:2.00)A.保护的成员只能被类本身的成员函数及友元类
7、的成员函数访问B.保护成员可以被程序中的任何代码访问C.保护的成员与私有成员是完全一样的D.保护成员访问权限和公有成员是一样的14.下列模板声明中,有语法错误的是_。(分数:1.00)A.templatetypename TT fun(T x)return x;B.templatetypename TT fun(T x,int n)return x*n;C.templateclass TT fun(T *p)return *p;D.templateclass TT ctassAT n;15.有如下程序: #includeiostream using namespace std; void f1
8、(intx=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.3616.对于语句“coutsetfill(“*“)setw(10)1setfill(“*“)setw(2)2;”的输出结果是_。(分数:2.50)A.*1*2B.*12C.*1*2D.12*17.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概念
9、设计阶段C.逻辑设计阶段D.物理设计阶段18.Sample 是一个类,执行下面语句后,调用 Sample 类的构造函数的次数是_。 Sample a2.*p=new Sample;(分数:2.50)A.0B.1C.2D.319.当需要将一个函数 bool isnumber(char c)声明为内联函数时,此内联函数的函数原型为_。(分数:1.00)A.enum bool isnumber(char c):B.define bool isnumbcr(char c):C.inline bool isnumber(char c):D.extem bool isnumber( char c):20.
10、下列关于类模板的描述中,错误的是 _ 。(分数:2.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数21.下列关于 C+函数的叙述中,正确的是_。(分数:2.00)A.函数不能自己调用自己B.每个函数都必须返回一个值C.每个函数至少要有一个参数D.函数在被调用之前必须先进行声明或定义22.有以下程序: #includeiostream using namespace std; class R public: R(int r1,int r2) R1=r1; R2=r2; void print(); void print()
11、corist; private: int R1,R2; ; void R:print() void R:print()coiist int main() R a(5,4); const R b(20,52); b.print(); return 0; 执行后的输出结果是_。(分数:1.00)A.5,4B.20,52C.0,0D.4,523.已知 Value 是一个类,Value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是_。(分数:2.00)A.Value operator+(Value v,int i);B.Value operator+(Value v
12、=value,int i);C.Value operator+(Value vint i=0);D.Value operator+(Value v=value,int i=0);24.有如下程序: #includeiostream uslng namespace std; class Con char ID; public: Con():ID(“A)cout1; Con(char ID):ID(ID)cout2; Con(Conc):ID(c.getID()cout3; char getID()constreturn ID; ; void show(Con c)coutc.getID(); i
13、nt main() Con c1; show(c1); Con c2(“B“); show(c2); return 0; 执行上面程序的输出是_。(分数:1.00)A.13A23AB.23A13BC.13A23BD.13823A25.下列叙述中正确的是_。(分数:2.50)A.全局变量的作用域一定比局部变量的作用域范围大B.静态类别变量的生存期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值26.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员的类型B.模板参数可以作
14、为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型27.程序流程图中带有箭头的线段表示的是_。(分数:2.50)A.图元关系B.数据流C.控制流D.调用关系28.有如下程序段: int i=1;int j=4; int main() int j=i,i=8; Coutijendl; 运行时的输出结果是_。(分数:2.00)A.14B.81C.88D.1829.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层)_。(分数:1.00)A.3B.4C.6D.730.下列选项中不属于结构化程序设计原则的是
15、_。(分数:1.00)A.可封装B.自顶向下C.模块化D.逐步求精31.下列有关继承和派生的叙述中,正确的是_。(分数:3.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类32.下列关于运算符重载的描述中,错误的是_。(分数:2.00)A.:运算符不能重载B.类型转换运算符只能作为成员函数重载C.将运算符作为非成员函数重载时必须定义为友元D.重载运算符应完成“下标访问”操作33.若 MyClass 为一个类,执行“MyClass
16、a4,*p5;”语句时会自动调用该类构造函数的次数是_。(分数:2.00)A.2B.5C.4D.934.下列语句中,错误的是_。(分数:1.00)A.const int buffer=256;B.const double*point;C.int const buffer=256;D.double*const point;35.下列特征中不是面向对象方法的主要特征的是 _ 。(分数:2.00)A.多态性B.继承C.封装性D.模块化36.为了提高函数调用的实际运行速度,可以将较简单的函数定义为_。(分数:2.50)A.内联函数B.重载函数C.递归函数D.函数模板37.有如下程序: #include
17、iostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val= 3; 编译运行这个程序将出现的情况是 _ 。(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数38.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(分数:1.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.
18、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略39.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层) _ 。(分数:2.00)A.3B.4C.6D.740.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为_。(分数:2.50)A.23,13,51,57,66,26,81,69,7
19、6B.13,23,26,51,57,66,81,76,69C.23,13,51,57,26,66,81,69,76D.23,13,51,57,81,26,66,69,76二级 C+分类模拟 272 答案解析(总分:72.00,做题时间:90 分钟)一、选择题(总题数:40,分数:72.00)1.关于纯虚函数,下列表述中正确的是_。(分数:2.50)A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0;”结束 C.派生类必须实现基类的纯虚函数D.含有纯虚函数的类不可能是派生类解析:2.下列叙述中正确的是(分数:1.00)A.软件交付使用后还需要进行维护 B.软件
20、一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:解析 软件生命周期分为软件定义、软件开发及软件运行维护 3 个阶段。维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段。3.有如下类定义: Class MyClass public: _ private: int data; 若要为 MyClass 类重载流输入运算符,使得程序中可以“cinobj;”形式输入 MyClass 类的对象obj,则横线处的声明语句应为_。(分数:2.50)A.friend istreamB.friend istream C.istre
21、amD.istream解析:解析 在 C+中,C+流输入运算符“”和输出运算符“”只能重载为非类成员函数,一般重载为友元函数。重载 C+流输入运算符“”和输出运算符“”的格式为: friend istream friend ostream4.数据库设计中反映用户对数据要求的模式是_。(分数:1.00)A.内模式B.概念模式C.外模式 D.设计模式解析:解析 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择 C。内模式又称物理模式,它给出了数
22、据库物理存储结构与物理存取方法。5.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 提供了向流中插入数据的有关操作;ostream 提供了从流中提取数据的有关操作。6.有如下程序: #includeiostream using namespace std; class Pair int
23、m,n; public; Pair(int j,int k):m(j),n(k) int get()return m; int get() constreturn m+n; ); int main() Pair a(3,5); corist Pair b(3,5); couta.get()b.get(); return 0; 运行时的输出结果是_。(分数:1.00)A.33B.38 C.83D.88解析:解析 const 函数只能被 const 对象调用,a.get()函数调用的返回值是 3,而 bget()调用的返回值是 8。7.己知类 X 是类 Y 的友元,类 Y 是类 Z 的友元,则 _
24、。(分数:2.00)A.类 X 一定是类 Z 的友元B.类 Z 一定是类 X 的友元C.类 Z 的成员函数可以访问类 Y 的对象的任何成员D.类 K 的成员函数可以访问类 Y 的对象的任何成员 解析:8.对图书进行编目时,图书有如下属性:ISBN 书号,书名,作者,出版社,出版日期。能作为关键字的是_。(分数:2.50)A.ISBN 书号 B.书名C.作者,出版社D.出版社,出版日期解析:解析 在有些应用系统中,常常采用增加如“序号”这类数据作为关键字以区分各条记录。9.下列结构体类型说明和变量定义中正确的是_。(分数:2.50)A.typedef struct;int n;char c;RE
25、C;REC t1,t2; B.struct REC;int n;char c;REC t1,t2;C.typedef struct REC;int n=0;char c=“A“;t1,t2D.structint n;char c;REC;REC t1,t2解析:解析 定义结构体类型的一般形式“struct 结构体名成员列表)”,struct 结构体名不能加“;”号。10.若有定义语句“int i=2,j=3;”,则表达式 i/j 的结果是_。(分数:1.00)A.0 B.0.7C.0.66667D.0.66666667解析:解析 整数相除为整数,所以结果为 0。11.若已经声明了函数原型“bo
26、ol fun(bool a,int b=0);”,则下列重载函数声明中正确的是_。(分数:1.00)A.bool fun(bool a=true,int b=0);B.int fun(bool a,int );C.void fun(double a,int ); D.void fun(bool a,int b=0);解析:解析 本题考查函数重载相关知识,重载函数是函数的一种特殊情况,为方便使用,C+允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。A、B、D 选项的部分形参都与原函数相同,所以
27、不能作为重载函数,选项 C 正确。12.下面关于 C+流的叙述中,正确的是(分数:2.00)A.cin 是一个输入流对象 B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char *y=“PQMN“; couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cin.getline(x,80);时,若键入 Happy new year 则 x 中的字符串是“Happy“解析:解析 本题考核 C+流的概念和 I/O 的格式化。cin 是 istream 类的对象,即输入流对象。ifstream 是输入文件流类不能定义个输出流对象。C 选项中执行语句序列 ch
28、ar *y=“PQMN“; couty;后将输出字符串“PQMN“。getline 函数功能是允许从输入流中读取多个字符,并且允许指定输入终止字符(默认是换行字符),在读取完成后,从读取的内容中删除该终止字符,所以 D 选项中的语句序列后 x 中字符串应该是“Happy new year“。13.下列关于保护成员的说法中,正确的是 _ 。(分数:2.00)A.保护的成员只能被类本身的成员函数及友元类的成员函数访问 B.保护成员可以被程序中的任何代码访问C.保护的成员与私有成员是完全一样的D.保护成员访问权限和公有成员是一样的解析:14.下列模板声明中,有语法错误的是_。(分数:1.00)A.t
29、emplatetypename TT fun(T x)return x;B.templatetypename TT fun(T x,int n)return x*n;C.templateclass TT fun(T *p)return *p;D.templateclass TT ctassAT n; 解析:解析 第四个选项是定义类模板的,但是 class 前面的 T 是多余的。对于第二个选项,同一个类的对象相乘还是同一个类的对象,但是可能要考虑溢出的问题。15.有如下程序: #includeiostream using namespace std; void f1(intx=y;y=z; vo
30、id 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解析:解析 函数 f1 的参数传递方式采用传引用方式,调用函数 f1 后,实参变量 x、y 的值被交换。此时,x=26,y=10。函数 f2 的参数传递方式采用传值方式,调用函数 f2 后,不会改变实参变量 x、y 的值。故程序输出 y 的值为 10。16.对于语句“coutsetfill(“*“)setw(10)1setf
31、ill(“*“)setw(2)2;”的输出结果是_。(分数:2.50)A.*1*2 B.*12C.*1*2D.12*解析:解析 C+语言中 setfill 的意思是在空格的地方填上 setfill 函数中的参数字符,setw 的意思是设置整个输出字符串的字符个数,本题中用*来代替空格。17.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:解析 E-R 图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。18.Sample 是一个类,执行下面语句后,调
32、用 Sample 类的构造函数的次数是_。 Sample a2.*p=new Sample;(分数:2.50)A.0B.1C.2D.3 解析:19.当需要将一个函数 bool isnumber(char c)声明为内联函数时,此内联函数的函数原型为_。(分数:1.00)A.enum bool isnumber(char c):B.define bool isnumbcr(char c):C.inline bool isnumber(char c): D.extem bool isnumber( char c):解析:解析 本题考查内联函数的相关知识点。函数原型应指出函数名、返回值类型以及在调用
33、函数时提供的参数的个数和类型,因为要声明为内联函数,故应加 inline 关键字。20.下列关于类模板的描述中,错误的是 _ 。(分数:2.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数 解析:解析 类模板是一系列相关类的模板,类成员组成相同,成员函数的源代码形式相同,所不同的是所针对的类型。类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。但可以为类模板的参数设置默认值。由此可知应选 D。21.下列关于 C+函数的叙述中,正确的是_。(分
34、数:2.00)A.函数不能自己调用自己B.每个函数都必须返回一个值C.每个函数至少要有一个参数D.函数在被调用之前必须先进行声明或定义 解析:22.有以下程序: #includeiostream using namespace std; class R public: R(int r1,int r2) R1=r1; R2=r2; void print(); void print()corist; private: int R1,R2; ; void R:print() void R:print()coiist int main() R a(5,4); const R b(20,52); b.p
35、rint(); return 0; 执行后的输出结果是_。(分数:1.00)A.5,4B.20,52 C.0,0D.4,5解析:解析 使用 const 关键字修饰的对象称为常对象,题中对象 b 被声明为类 R 的常对象。使用const 关键字说明的成员函数称为常成员函数,类 R 中用 const 重载了函数 print()。在使用常对象和常成员函数时应注意的是:const 是函数类型的一个组成部分,因此在常成员函数部分也要带 const 关键字;常成员函数不能更新对象的数据成员,也不能调用该类中没有用 const 修饰的成员函数;如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数
36、,不能调用其他的成员函数;const 关键字可以参与区分重载函数。23.已知 Value 是一个类,Value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是_。(分数:2.00)A.Value operator+(Value v,int i);B.Value operator+(Value v=value,int i); C.Value operator+(Value vint i=0);D.Value operator+(Value v=value,int i=0);解析:解析 此题考查的是重载加法运算符“+”。“+”是二元运算符,其第一操作数是对象本身,
37、i为第二操作数,由此可知选项 B 正确。24.有如下程序: #includeiostream uslng namespace std; class Con char ID; public: Con():ID(“A)cout1; Con(char ID):ID(ID)cout2; Con(Conc):ID(c.getID()cout3; char getID()constreturn ID; ; void show(Con c)coutc.getID(); int main() Con c1; show(c1); Con c2(“B“); show(c2); return 0; 执行上面程序的输
38、出是_。(分数:1.00)A.13A23AB.23A13BC.13A23B D.13823A解析:解析 Con c1 定义 c1 对象,调用 Con 的无参数构造函数,输出 1,ID 值变为 A,执行 show(c1)时会调用复制构造函数,将 cl 对象的值复制给 show 函数的形参,此时输出 3,然后在 show()中输出 cl的 ID 值 A,Con c2(“B“)定义 c2 对象,调用 Con(char ID)构造函数,输出 2,c2 的 ID 值为 B,show(c2)执行时先调用复制构造函数输出 3,然后输出 B。因此程序输出结果为“13A23B”。25.下列叙述中正确的是_。(分
39、数:2.50)A.全局变量的作用域一定比局部变量的作用域范围大B.静态类别变量的生存期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量D.未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值解析:解析 本题考查的是变量的作用域及其生存周期。一个全局变量的生存周期从它被声明开始直到程序结束;一个局部变量的生存周期从它被声明开始,直到包含它的最近的一个程序块结束。静态变量的生存周期将延续到整个程序的终止。26.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员
40、函数的参数类型D.模板参数不能作为成员函数的局部变量的类型 解析:解析 本题考查类模板的概念和定义,模板参数可以作为成员函数的局部变量的类型。27.程序流程图中带有箭头的线段表示的是_。(分数:2.50)A.图元关系B.数据流C.控制流 D.调用关系解析:解析 程序流程图是人们对解决问题的方法、思路或算法的一种描述通常也称为程序框图。其中,带箭,头的线段表示控制流,矩形表示加工步骤,菱形表示逻辑条件。28.有如下程序段: int i=1;int j=4; int main() int j=i,i=8; Coutijendl; 运行时的输出结果是_。(分数:2.00)A.14B.81 C.88D
41、.18解析:29.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层)_。(分数:1.00)A.3B.4C.6D.7 解析:解析 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0 的叶子结点总比度为 2 的结点多一个,所以本题中度为 2 的结点为 1-1=0 个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共 7 个结点共 7 层,即度为 7。30.下列选项中不属于结构化程序设计原则的是_。(分数:1.00)A.可封装 B.自顶向下C.模块化D.逐步求精解析:解析 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 g
42、oto 语句,所以选择 A。31.下列有关继承和派生的叙述中,正确的是_。(分数:3.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 解析:解析 此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项 A 和 B 错误;公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项 C 错误。32.下列关于运算符重载的描述中,错误的是_。(分数
43、:2.00)A.:运算符不能重载B.类型转换运算符只能作为成员函数重载C.将运算符作为非成员函数重载时必须定义为友元 D.重载运算符应完成“下标访问”操作解析:解析 C+把重载的运算符视为特殊的函数,称为运算符函数。“运算符重载”是针对 C+中原有运算符进行的,不可能通过重载创造出新的运算符。33.若 MyClass 为一个类,执行“MyClass a4,*p5;”语句时会自动调用该类构造函数的次数是_。(分数:2.00)A.2B.5C.4 D.9解析:解析 语句 MyClass a4,*p5不仅定义了 4 个 MyClass 对象,分别为 a0,a1,a2,a3,而且定义了 5 个指向 My
44、Class 对象的指针变量,分别为*p0,*p1,*p2,*p3,*p4,所以共调用MyClass 的构造函数 4 次。34.下列语句中,错误的是_。(分数:1.00)A.const int buffer=256;B.const double*point;C.int const buffer=256;D.double*const point; 解析:解析 const 是一个 C+关键字,用于限定不允许改变的变量。选项 B 是指向常量的指针,定义时可以不初始化;选项 D 是指针常量,定义时必须初始化。故答案为 D。35.下列特征中不是面向对象方法的主要特征的是 _ 。(分数:2.00)A.多态性
45、B.继承C.封装性D.模块化 解析:解析 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。36.为了提高函数调用的实际运行速度,可以将较简单的函数定义为_。(分数:2.50)A.内联函数 B.重载函数C.递归函数D.函数模板解析:37.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(
46、val); coutval; return 0; void function(double val) val= 3; 编译运行这个程序将出现的情况是 _ 。(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:38.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(分数:1.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板
47、实参,任何情况下都不能省略 解析:解析 在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“”也可以不要,因此选项 D 错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。39.某二叉树共