1、国家计算机二级(C+)73 及答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.类的析构函数的作用是( )。(分数:2.00)A.以任何方式调用一个虚函数B.以任何方式调用一个纯虚函数C.借助于指向对象的基类指针或引用调用一个虚函数D.借助于指向对象的基类指针或引用调用一个纯虚函数2.while 和 do-while 循环的主要区别是( )。(分数:2.00)A.do-while 的循环体至少无条件执行一次B.while 的循环控制条件比 do-while 的循环控制条件更严格C.do-while 允许
2、从外部转到循环体内D.do-while 的循环体不能是复合语句3.以下叙述中错误的是_。 (分数:2.00)A.C 语句必须以分号结束B.复合语句在语法上被看作一条语句C.空语句出现在任何位置都不会影响程序运行D.赋值表达式末尾加分号就构成赋值语句4.不能重载的运算符是( )。(分数:2.00)A.一般成员函数的初始化B.类的初始化C.对象的初始化D.删除类创建的对象5.以下叙述正确的是( )。(分数:2.00)A.函数可以嵌套定义但不能嵌套调用B.函数既可以嵌套调用也可以嵌套定义C.函数既不可以嵌套定义也不可以嵌套调用D.函数可以嵌套调用但不可以嵌套定义6.下列关于函数模板实参不能省略的情况
3、说明不正确的是( )。(分数:2.00)A.等号=B.集合运算符C.加号+D.减号-7.下面程序的运行结果是( )。 #includeiostream.h void main( ) int i=1; while(i=n;i-)ai+1=ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;iA.10234B.12344C.12334D.1223414.以下能正确定义字符串的语句是_。 (分数:2.00)A.char str=/064;B.char str=“/x43“;C.char str=;D.char str=“/0“;
4、15.下列关于虚基类的描述,错误的是( )。(分数:2.00)A.设置虚基类的目的是为了消除二义性B.虚基类的构造函数在非虚基类之后调用C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数16.以下各选项组中,均是 C+语言关键字的组是( )。(分数:2.00)A.public operator thisB.shod string staticC.it while =D.private cout printf17.对表达式 for(表达式 1;表达式 3)可理解为( )。(分数:2.00)A.Mi
5、nB.MaxC.Max 和 Min 之间D.Max 和 Min 之外18.下列叙述中正确的是_。 (分数:2.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令19.以下类定义中可能会引起错误的语句是( )。 class A public: A( ) /1 int i; /2 private: int j; /3 A(int i) i+; /4 ; (分数:2.00)A.1B.2C.3D.420.下列程序的运行结果是( )。 #includeiostreamh void fun(int *a,ih
6、t *B) int *k; k=a;a=b;b=k; void main( ) inta=3,b=6,*x= for(i=0;i和k=+i; p+; q-k=i+; q-; q-k=i; for(i=0;i填空项 1:_46.请按下面注释的提示,将类 B 的构造函数定义补充完整。 C1assA int a; public: A(int aaO)aaa; ; class B:public A int b; A c; public: /用 aa 初始化基类 A,用 aa1 初始化类对象成员 c B(int aa: 1baa2 ; (分数:30.00)填空项 1:_47.表达式 xoperator+
7、1 还可写成 2。(分数:30.00)填空项 1:_48.C+语言中表示双精度浮点数的关键字是 1。(分数:30.00)填空项 1:_国家计算机二级(C+)73 答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.类的析构函数的作用是( )。(分数:2.00)A.以任何方式调用一个虚函数B.以任何方式调用一个纯虚函数C.借助于指向对象的基类指针或引用调用一个虚函数 D.借助于指向对象的基类指针或引用调用一个纯虚函数解析:本题考查 C+语言中 运算符的意义。C+语言中 和 运算符都是友元函数重载,分别用于输
8、出和输入。2.while 和 do-while 循环的主要区别是( )。(分数:2.00)A.do-while 的循环体至少无条件执行一次 B.while 的循环控制条件比 do-while 的循环控制条件更严格C.do-while 允许从外部转到循环体内D.do-while 的循环体不能是复合语句解析:while 是先判断条件再执行语句;do-while 则是先执行一次语句再判断条件,从而决定是否继续再执行循环体中的语句,这正是二者主要区别。3.以下叙述中错误的是_。 (分数:2.00)A.C 语句必须以分号结束B.复合语句在语法上被看作一条语句C.空语句出现在任何位置都不会影响程序运行 D
9、.赋值表达式末尾加分号就构成赋值语句解析:“空语句出现在任何位置都不会影响程序运行”这句话是错误的,例如在 for 循环中,循环条件语 句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。4.不能重载的运算符是( )。(分数:2.00)A.一般成员函数的初始化B.类的初始化C.对象的初始化D.删除类创建的对象 解析:此题主要考查方法重载,方法的重载是指多个方法可以享有相同 的名字,但参数的数量或类型必须不相同(采用不同的形式参数列表)。选项 B)不符合方法重载的要求。5.以下叙述正确的是( )。(分数:2.00)A.函数可以嵌套定义但不能嵌套调用B.函数既可以嵌套调用也可
10、以嵌套定义C.函数既不可以嵌套定义也不可以嵌套调用D.函数可以嵌套调用但不可以嵌套定义 解析:在 C+语言中,所有的函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于男一个函数,即函数不能嵌套定义,但可以互相调用。但是不能调用 main( )函数。6.下列关于函数模板实参不能省略的情况说明不正确的是( )。(分数:2.00)A.等号=B.集合运算符 C.加号+D.减号-解析:在捕获一个异常之前,必须先有异常抛出,才能生成一个异常对象,这就是用抛出异常来实现的。抛出异常、生成异常对象都通过 throW 语句实现,如: IOExcepftion e=new IOException; t
11、hrow e; 利用 throw 语句还可以自定义异常类抛出。 7.下面程序的运行结果是( )。 #includeiostream.h void main( ) int i=1; while(i=n;i-)ai+1=ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;iA.10234B.12344C.12334 D.12234解析:本题函数 fun 的作用是将指定的数组元素(从下标 n 到下标 m)向后移一位。由函数调用“fun(a,2,9);”可知,函数 fun 用于将 a2 到 a9的各元素依次向后移一位,移完后,a
12、数组中各元素的值分别为 1,2,3,3,4,5,6,7,8,9,10,故输出的前 5 个数组元素为 12334。14.以下能正确定义字符串的语句是_。 (分数:2.00)A.char str=/064;B.char str=“/x43“;C.char str=;D.char str=“/0“; 解析:C 语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存放,故选项 A、C 不属 于字符串, 选项 B 定义的是一个字符变量 str,却用来存放字符串,显然也不正确,所以选项 D 正确。15.下列关于虚基类的描述,错误的是( )。(分数:2.00)A.设置虚基类的目的是为了消除二义性B
13、.虚基类的构造函数在非虚基类之后调用 C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数解析:虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数选于非虚基类的构造函数执行。16.以下各选项组中,均是 C+语言关键字的组是( )。(分数:2.00)A.public operator this B.shod string staticC.it while =D.private cout printf解析:关键字是系统已预
14、定义的单词,在程序中有不同的用途,考生应该 熟记。17.对表达式 for(表达式 1;表达式 3)可理解为( )。(分数:2.00)A.Min B.MaxC.Max 和 Min 之间D.Max 和 Min 之外解析:复选框也称检查框,它的 Value 属性值可以设置或返回 0,1,2。 0:表示没有选中复选框。 1:表示选中该复选框。 2:表示该复选框被禁止,显示为灰色。 18.下列叙述中正确的是_。 (分数:2.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:软件的运行和维护是指将已交
15、付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求 进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役 的过程。19.以下类定义中可能会引起错误的语句是( )。 class A public: A( ) /1 int i; /2 private: int j; /3 A(int i) i+; /4 ; (分数:2.00)A.1B.2C.3D.4 解析:本题考查关于 C+语言类的定义方法。在 c+语言中类定义中的构造函数是私有的,但是其却调用了其中的公有变量,在实例化时会出现错误。20.下列程序的运行结果是( )。 #includeiostre
16、amh void fun(int *a,iht *B) int *k; k=a;a=b;b=k; void main( ) inta=3,b=6,*x= for(i=0;i和k=+i; p+; q-k=i+; q-; q-k=i; for(i=0;i填空项 1:_ (正确答案:13431)解析:程序执行过程如下:p=m,q=m+4,条件 p!=q 成立,执行 p-k=+i;,由于是“前加”,所以 m0.k=1,执行 p+后 p=m+1;执行 q-k=i+;,由于是“后加”,所以 m4.k=1,然后使得 i 加上 1,即 i=2,q-后,q=m+3; p=m+1,q=m+3,条件 p!=q 成立
17、,执行 p-k=+i; ,由于是“前加”,所以 i=3,m0.k=3,执行 p+后 p=m+2; 执行 q-k=i+; ,由于是“后加”,所以 m4.k=3,i=4,q-后,q=m+2;p=m+2,q=m+2,条件 p!=q 不成立,则执行 q-k=i;即 m2.k=4;故输出的值为 13431。46.请按下面注释的提示,将类 B 的构造函数定义补充完整。 C1assA int a; public: A(int aaO)aaa; ; class B:public A int b; A c; public: /用 aa 初始化基类 A,用 aa1 初始化类对象成员 c B(int aa: 1ba
18、a2 ; (分数:30.00)填空项 1:_ (正确答案:A(Aa),c(aa+1)或 c(aa+1),A(aA))解析:本题考核派生类构造函数的定义。题中要求用明初始化基类 A,用 aa+1 初始化类对象成员 c,用的初始化列表的形式,即 A(aA),c(aa+1)或 c(aa+1),A(aA) 。47.表达式 xoperator+1 还可写成 2。(分数:30.00)填空项 1:_ (正确答案:+x)解析:C+语言中用成员函数重载+x 为 xoperator +-|_|-用友元函数重载+x 为:operator +(x)48.C+语言中表示双精度浮点数的关键字是 1。(分数:30.00)填空项 1:_ (正确答案:double)解析:C+语言中基本的数据类型关键字,有 int,float,double。