1、计算机等级考试二级(C+)47 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.以下程序的输出结果是( )。 #includeiostream.h voidmain( ) intx=1,y=3; coutX+“,“; intx=0;X+=y*2; coutx“,“y“,“; coutx“,“y; (分数:2.00)A.1,6,3,1,3B.1,6,3,6,3C.1,6,3,2,3D.1,7,3,2,32.执行语句序列 intn: cinn: switch(n) casel: case2:cout1:
2、case 3: case4:cout2: break: delhult:cout3: 时,若键盘输入 1,则屏幕显示【 】(分数:2.00)A.1B.2C.3D.123.下列数据结构中,能用二分法进行查找的是_。 (分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表4.决定 C+语言中函数的返回值类型的是( )。(分数:2.00)A.return 语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型5.有以下程序 main() int y=10; while(y-);printf(“y=%d/n“,
3、y); 程序执行后的输出结果是_。(分数:2.00)A.y=0B.y=-1C.y=1D.while6.对下列二叉树: (分数:2.00)A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG7.下列模式中,能够给出数据库物理存储结构与物理存取方法的是【 】(分数:2.00)A.内模式B.外模式C.概念模式D.逻辑模式8.若有下面的函数调用 fun(a+b,3,max(n-1,b)则 fun 的实参个数是【 】(分数:2.00)A.3B.4C.5D.69.存在定义 int a10,x,*pa;,若 pa: class A public: virtual Void funcl()
4、coutfuncl(); p-func2(); retum0; 运行程序,屏幕上将显示输出_。 (分数:2.00)A.B1B2B.A1A2C.B1A2D.A1B221.下面程序应能对两个整型变量的值进行交换。以下正确的说法是( )。 #includeiostreamh void swap(int p,int q) int t; t=p; p=q; q=t; void main( ) int a=10,b=20; couta“ “b; swap(+) result=result*ai; return result; void main( ) int a3 =3,4,5; coutfun(a,3)
5、endl; (分数:2.00)A.2B.0C.-2D.125.下列运算符中,在 C+语言中不能重载的是( )。(分数:2.00)A.sleep( )B.yield( )C.interrupt( )D.stop( )26.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和_。(分数:2.00)A.编码设计B.测试阶段C.运行阶段D.物理设计27.下列运算符不能重载为友元函数的是【 】(分数:2.00)A.= ( ) -B.+ - +-C. = print5; pd-print6; delete pd; return 0; (分数:2.00)43.若变量 a,b 已定义为 int 类型并赋值
6、21 和 55,要求用 printf 函数以 a=21,b=55 的形式输 出,请写出完整的输出语句 1。(分数:2.00)填空项 1:_44.C+程序是从 1 函数开始执行的。(分数:2.00)填空项 1:_45.假定 A 为一个类,则语句 A(A while(y-);printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:2.00)A.y=0B.y=-1 C.y=1D.while解析:此题考核的是 while 条件语句及自减运算。当 while 的条件表达式成立时(非零),重复执行循环体, 但此题的 while 循环无循环体,则只要 while 的条件表达式成立,就不断执
7、行 while 条件表达式,直到其条 件表达式不成立,程序就自动跳出 while 循环,直接执行 printf 语句。“y”表示先运用 y 的值,再进行 y 自减。本题一开始先判断 y 为 10 的值是否满足条件(同时 y 的值自减 1),显然 y=10 条件满足,则再次 执行 while 语句,判断 y 为 9 的值是否满足条件(同时 y 的值自减 1)直到判断 y 为 0 的值是否满足 条件(同时 y 的值自减 1,即 y=-1),此时条件为假,退出循环,执行 printf 语句,输出 y=-1。6.对下列二叉树: (分数:2.00)A.ACBDFEGB.ACBDFGEC.ABDCGEFD
8、.FCADBEG解析:7.下列模式中,能够给出数据库物理存储结构与物理存取方法的是【 】(分数:2.00)A.内模式 B.外模式C.概念模式D.逻辑模式解析:能够给出数据库物理存储结构与物理存取方法的是内模式。外模式是用户的数据视图,也就是用户所见到的数据模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。没有逻辑模式这一说法。正确答案为 A。8.若有下面的函数调用 fun(a+b,3,max(n-1,b)则 fun 的实参个数是【 】(分数:2.00)A.3 B.4C.5D.6解析:在 fun()中用“,“隔开的参数表示其参数的个数,所以其共有 3 个参数。9.存在定
9、义 int a10,x,*pa;,若 pa: class A public: virtual Void funcl()coutfuncl(); p-func2(); retum0; 运行程序,屏幕上将显示输出_。 (分数:2.00)A.B1B2B.A1A2C.B1A2D.A1B2解析:21.下面程序应能对两个整型变量的值进行交换。以下正确的说法是( )。 #includeiostreamh void swap(int p,int q) int t; t=p; p=q; q=t; void main( ) int a=10,b=20; couta“ “b; swap( t= * p; * p=*
10、q;*q=t;执行程序时,先将 a 的地址传递给指针变量 p,b 的地址传递给指针变量 q,然后将*p(a 的值)的值传递给t,将*q(b 的值)传递给 * p,将 t 的值传递给 * q,从而将 a 值和 b 值互换。22.下列定义中 p 指向的地址可更改,但* p 不能够更改的是( )。(分数:2.00)A.用于输入的友元函数 B.用于输入的成员函数C.用于输出的友元函数D.用于输出的成员函数解析:C+语言中 setfil1 的意思是在空格的地方填上 setfil1 函数中的参数字符,setw 的意思是没置整个输出字符串的字符个数,本题中用:来代替空格。23.关于构造函数 A( )的拷贝构
11、造函数正确的是( )。(分数:2.00)A.A(A * B);B.A(A B);C.A(A +) result=result*ai; return result; void main( ) int a3 =3,4,5; coutfun(a,3)endl; (分数:2.00)A.2B.0 C.-2D.1解析:单目的+运算优先级高于双目的+运算,不过+的结合性是自右向 左的,而+是自左至右的,所以上面的两个表达式都是先计算 a+b 的值之后,a 再自加 1。25.下列运算符中,在 C+语言中不能重载的是( )。(分数:2.00)A.sleep( ) B.yield( )C.interrupt( )
12、D.stop( )解析:下面是常量类型及其类型说明符: 整型 长整型 class Base public: Void print2coutprint5; pd-print6; delete pd; return 0; (分数:2.00)解析:43.若变量 a,b 已定义为 int 类型并赋值 21 和 55,要求用 printf 函数以 a=21,b=55 的形式输 出,请写出完整的输出语句 1。(分数:2.00)填空项 1:_ (正确答案:printf(“a=%d,b=%d“,a,b);)解析:printf 函数为格式输出函数,括号内包括两部分:-|_|-“格式控制”是用双引号括起来的字符串
13、, 其中包括两种信息:“格式说明”由“%”和格式字符组成,此题定义为 int 型所以要用%d;“普通 字符”即需要原样输出的字符,此题目中为 a=,b=;-|_|-“输出列表”是需要输出的一些数据,可以是表 达式。44.C+程序是从 1 函数开始执行的。(分数:2.00)填空项 1:_ (正确答案:main)解析:所有的 C+语言程序都是从 main 函数刀:始执行,而普通函数的存在是为了 简化 main 函数的复杂程度。 45.假定 A 为一个类,则语句 A(A &a);为该类 1 函数的原型说明。(分数:2.00)填空项 1:_ (正确答案:拷贝构造)解析:本题考查的是拷贝构造函数的定义,
14、它是一种特殊的成员函数,作用是使用 一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名: :拷贝构造函数名 (类名引用名)。 46.静态成员函数可以直接访问类的 1 成员,不能直接访问类的 2 成员。(分数:2.00)填空项 1:_ (正确答案:静态)解析:静态成员函数可以直接访问该类中的静态数据成员,而不能访问该类中的非静态数据成员。47.继承的方式有公有继承、私有继承和 13 种。(分数:2.00)填空项 1:_ (正确答案:保护继承)解析:继承性是面向对象程序设计中最重要的机制,用户可以根据不同的需要选择 3 种不同的继承方式。48.以下程序的执行结果为 1。 #include
15、iostream using namespace std; class base public: virtual void who2 cout “base class“ end1; ; class derivel:public base public: void who3 cout “derivel class“ end1; ; class derive2:public base public: void who4 cout “derive2 class“ end1; ; void main5 base obj1,* p; derivel obi2; derive2 obj3; p=&obj1
16、; p-who6; p=&obj2; p-who7; p=&obj3; p-who8; (分数:2.00)填空项 1:_ (正确答案:base class derivel class derive2 class)解析:本题考查虚函数的用法。类 base 含有虚函数 who-|_|-,该类派生出 derivel 类和 derive2 类,两个派生类中都有虚函数 who-|_|-的定义。在 main-|_|-函数中定义了一个指向 base 类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指的对象,当 p-who-|_|-时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。49
17、.下列程序在构造函数和析构函数中申请和释放类的数据成员 int*a,申请时使用形参 b 初始化 a,请填空。 classA public: A(intb); A( ); private: int*a; ; A:A(intb) 1; A:A( ) 2; (分数:2.00)填空项 1:_ (正确答案:a=new)填空项 1:_ (正确答案:int(b))解析:C+中 new 和 delete 的使用有如下几种:a=new int;delete a;a=new int(10);deletea;a=new int10;deletea;。 50. 1 是实现 C+语言编译时多态性的机制, 2 是实现 C+语言运行时多态性的机制。 (分数:2.00)填空项 1:_ (正确答案:静态联编或静态绑定)解析:C+语言编泽时多态性的机制是静态绑定,实现 C+语言运行时多态性的机制是动态绑定。