【计算机类职业资格】二级C++笔试-289及答案解析.doc
《【计算机类职业资格】二级C++笔试-289及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++笔试-289及答案解析.doc(29页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+笔试-289 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.有如下程序:#includeiostreamusing namespace std;class XXprotected:int k;public:XX(int n=5):k(n);XX()cout“XX“:virtual void f()const=0;inline void XX:f()constcoutk+3;class YY:public XXpublic:YY()cout”YY”;void f()constcoutk-3; XX:f();int main()XX
2、 P.f();delete return 0:执行上面的程序将输出( )。(分数:2.00)A.28XXB.28YYXXC.33XXD.33XXYY2.在 E-R 图中,用来表示属性的图形是( )。(分数:2.00)A.矩形B.椭圆形C.菱形D.平行四边形3.有 3 个结点的二叉树有( )。(分数:2.00)A.2 种形态B.4 种形态C.7 种形态D.5 种形态4.函数 swap(a, n)可完成对 a 数组从第 1 个元素到第 n 个元素两两交换。其中 b0=1;b1=2; swap(b, 2)。在运行调用函数中的语句后,b0和 b1的值分别为( )。(分数:2.00)A.1,1B.1,2
3、C.2,2D.2,15.有如下函数模板:templateT cast(Uu)return u;其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是( )。(分数:2.00)A.cast(i);B.cast(i);C.cast(i);D.cast(i);6.如果表达式 y*x+中,“*”是作为成员函数重载的运算符,“+”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为( )。(分数:2.00)A.operator+(0).operator*(y)B.operator*(x.operator+(0), y)C.
4、operator*(operator+(x, 0)D.operator*(operator+(x, 0), y)7.下列关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加 virtual 说明D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型。8.以下程序的执行结果是( )。#includeiostream.h#includeiomanip.hvoid fun(int n)if(n!=0)fun(n-1);for(i
5、nt i=1; i(i);C.cast(i);D.cast(i); 解析:解析 选项 D)是将 double 类型的数据转化成 int 类型的数据,正确。6.如果表达式 y*x+中,“*”是作为成员函数重载的运算符,“+”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为( )。(分数:2.00)A.operator+(0).operator*(y)B.operator*(x.operator+(0), y)C.operator*(operator+(x, 0) D.operator*(operator+(x, 0), y)解析:解析 运算符函数有两种调用形式,第一种是像一
6、般函数那样用函数名调用,即 y.operator*(z)或者 operator*(y,z);另一种是通过运算符构成表达式,即 y*z。因为“+”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀“+”时必须多一个虚拟参数:int。7.下列关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加 virtual 说明 D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型。解析:解析 此题考查虚函数
7、的概念。在成员函数声明的前面加上 virtual 修饰,即把该函数声明为虚函数。虚函数只能是类中的一个成员函数,但不能是静态成员函数,所以选项 A)和 B)错误;在派生类中重新定义虚函数时必须有相同的函数类型,包括函数的返回类型、函数名、参数个数、参数类犁的顺序必须相同。故选项 D)错误。8.以下程序的执行结果是( )。#includeiostream.h#includeiomanip.hvoid fun(int n)if(n!=0)fun(n-1);for(int i=1; i=n; i+)coutsetw(3)i;coutend1;void main()fun(3);(分数:2.00)A.
8、00 10 1 2B.11 21 2 3 C.12 23 3 3D.123解析:解析 首先由程序中的主函数 main 入手,调用 fun 函数,参数为 3。fun(n)函数在其内部,当 n不等于 0 时,递归调用 fun(n-1)。当参数为 3 时,fun(3)调用 fun(2),然后利用 for 循环输出 i 值,当 n=1 时,只输出 1,输出回车后,就跳入 fun(2),输出 1,2,最后输出是 1,2,3。9.已知枚举类型定义语句为:enum TokenNUMBER, PLUS=5, MINUS, PRINT=10;则下列叙述中错误的是( )。(分数:2.00)A.枚举常量 NAME
9、的值为 1 B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:解析 此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum 类型名枚举值表。需注意的是:当 n 个枚举值全部未赋常量值时,它们自左至右分别与整数 0、1、2、3n-1 对应;若第 i 个枚举值赋常量值为 m,则其未赋常量值的后续枚举值分别与整数 m+1、m+2对应,直到下一个赋了值的枚举值或结束。枚举常量 NAME 的值为 0。10.阅读下面的程序:#includeiostream.hvoid main()int x;cinx;if(x+5)coutxen
10、d1;elsecoutx-end1;如果两次执行上述程序,且键盘输入分别为 4 和 6,则输出结果分别是( )。(分数:2.00)A.4,6B.3,6C.4,7D.5,7 解析:解析 此题首先读入数值 4 赋给变量 x,因为 x+5 不成立,因为“+”后缀,之后 x 的值变为5,执行语句 coutx-end1;输出:5,之后 x 的值变为 4。当读入的数值是 6 时,因为 x+5 成立,所以执行语句 coutxend1;输出 7。11.将以下程序写成三目运算表达式是( )。if(xy)min=x;else min=y;(分数:2.00)A.min=(xy)?x:yB.min=(xy)?x:y
11、C.min=(xy)x:yD.min=(xy)?x,y解析:解析 题日中给出的程序是求 x,y 中的小值。即如果 x 小于 y,那么 min=x,否则 min=y。条件运算符为“?:”,(xy)?x:y 是当 x 小于 y 时取 x,否则取 y。12.在 C+程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用( )。(分数:2.00)A.内联函数 B.重载函数C.递归调用D.嵌套调用解析:解析 此题考查的是内联函数的相关知识点。C+引入内联函数是用它来代替 C 语苦中的预处理宏函数,内联函数在调用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。
12、13.定义如下枚举类型:enumMonday, Tuesday, Wednesday, Thrusday, Friday=2;,则下列 x 语句正确的是( )(分数:2.00)A.表达式 Wednesday=Friday 的值是 true B.Day day;day=3C.Day day;day=Monday+3D.Day day;day=Tuesday+10解析:解析 enum枚举类型名枚举元素表;其中:关键词 enum 表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。其中 enumMonday, Tuesday, Wednesday, Thrusday,
13、 Friday=2的值由 0 开始,即 0,1,2,3。D 中的本题中的枚举类型中的数据值Wednesday 为 2,而 Friday 的值赋值为 2,所以判断 Wednesday 等于 Friday 的表达式值为真,即 true。即选择 A)。14.用白盒法设计测试用例的方法包括( )。(分数:2.00)A.错误推测B.因果图C.基本路径测试 D.边界值分析解析:解析 白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。15.有如下程序:#includeiostreamusing namespace std;class Apublic:static int a;vo
14、id init()a=1;A(int a=2)init(); a+;int A:a=0;A obj;int main()coutobj.a;return 0;运行时输出的结果是( )。(分数:2.00)A.0B.1 C.2D.3解析:解析 此题实际考查的是变量作用域的屏蔽效应。在 C+中,当标识符的作用域发生重叠时,在一个函数中声明的标识符可以屏蔽函数外声明的标识符或全局标识符。声明类 A 的全局对象时,构造函数首先调用 int 函数,但由于静态成员变量 a 被构造函数内部的形参 a 所屏蔽所以 a+改变的是形参 a 的值,对静态成员变量 a 没有影响。16.软件结构设计的图形工具是( )。(
15、分数:2.00)A.DFD 图B.结构图 C.PAD 图D.N-S 图解析:解析 常用的软件结构设计工具是结构图,也称程序结构图。DFD 图(数据流图)是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,它是需求分析阶段的图形工具。盒式图(N-S 图)和问题分析图(PAD)是详细设计的常用工具。17.下列关于继承的描述中,错误的是( )。(分数:2.00)A.析构函数不能被继承B.派生类是基类的组合C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类保持不变 解析:解析 派生类中继承的基类成员的访问权限到派生类会发生变
16、化,例如:私有继承时,派生类不能访问基类的成员,所以选项 D)错误,其他选项均止确。18.有如下程序:#includeiostreamvoid fun(int x=y; y=t;int main()int a2=23,42;fun(a1,a0);std:couta0“,“a1std:end1;return 0;执行后的输出结果是( )。(分数:2.00)A.42,42B.23,23 C.23,42D.42,23解析:解析 此题考查的是函数的调用以及参数值的传递。函数。fun 中的第一个参数是引用传值方式,是双向的;第二个参数是按值传递,是单向的。19.下列数据结构中,能用二分法进行查找的是(
17、)。(分数:2.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性表解析:解析 要对线性表进行二分法查找,对线性表有两个要求:第一,要求线性表是按顺序方式存储的;第二,要求线性表中的元素是按照从小到大的顺序排好序。20.执行完下列代码段之后:bool x=true, y=false, z=false;x=xy=xyz=!(x!=y)(y-z);则 x=false, y=false, Z=( )。(分数:2.00)A.true B.falseC.不确定D.异常解析:解析 其中“x=x void set(int n)k=n;int get() constreturn k;clas
18、s MyDERIVED: protected MyBASEprotected:int j;public:void set(int m, int n)MyBASE:set(m);j=n;int get() constreturn MyBASE:get()+j;则类 MyDERIVED 中保护的数据成员和成员函数的个数是( )。(分数:2.00)A.4B.3 C.2D.1解析:解析 因为在保护继承的情况下,基类中的公有成员 void set(int n)和 int get() const 在派生类中是保护成员,再加上派生类自身的保护成员 j,一共是三个保护成员。27.如果表达式-x/y 中的“-”
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 笔试 289 答案 解析 DOC
