【计算机类职业资格】二级C++笔试-77及答案解析.doc

上传人:twoload295 文档编号:1324692 上传时间:2019-10-17 格式:DOC 页数:25 大小:80.50KB
下载 相关 举报
【计算机类职业资格】二级C++笔试-77及答案解析.doc_第1页
第1页 / 共25页
【计算机类职业资格】二级C++笔试-77及答案解析.doc_第2页
第2页 / 共25页
【计算机类职业资格】二级C++笔试-77及答案解析.doc_第3页
第3页 / 共25页
【计算机类职业资格】二级C++笔试-77及答案解析.doc_第4页
第4页 / 共25页
【计算机类职业资格】二级C++笔试-77及答案解析.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、二级 C+笔试-77 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.对于下列语句,正确的判断是for=(x=0;y=0;(y!=123)x+);(分数:2.00)A.是无限循环B.循环次数不定C.最多执行 4 次D.最多执行 3 次2.以下程序的输出结果为main( )int m=7,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;coutxendl;(分数:2.00)A.27.000000B.27.500000C.28.000000D.28.5000003.执行下列语句后,输出结果为cout.put(s

2、);coutca;(分数:2.00)A.caB.seaC.sD.a4.设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是(分数:2.00)A.6.500000B.6C.5.500000D.6.0000005.下列叙述中正确的是(分数:2.00)A.算法的空间复杂度是指算法程序的长度B.算法的效率只与所处理数据的规模有关,而与数据的存储结构无关C.数据的逻辑结构与存储结构是一一对应的D.上述三种说法都不对6.若有说明:int a34;则对 a 数组元素的非法引用是(分数:2.00)A.a02*1B.a13C.a4-20D.a047.在下面

3、的函数声明中,存在着语法错误的是(分数:2.00)A.void BC(int a,int)B.void BD(int,int)C.void BE(int,int t=5)D.int BF(int x;int y)8.下列表示纯虚函数的成员函数是(分数:2.00)A.virtual int func (int);B.void func(int)=0;C.virtual void func=0;D.virtual void flmc(int)9.为引入对象的同义词,对象的别名称为(分数:2.00)A.指针B.引用C.枚举D.结构10.设有如下关系表:(分数:2.00)A.B.C.D.11.在结构化

4、分析方法中,数据字典的作用是(分数:2.00)A.存放所有需要处理的原始数据B.存放所有处理的结果C.存放所有的程序文件D.描述系统中所用到的全部数据和文件的有关信息12.下列运算符中,不能重载的是(分数:2.00)A.?:B.+C.-D.=13.C+语言中函数返回值的类型决定于(分数:2.00)A.return 语句中的表达式类型B.调用函数的主调函数类型C.调用、函数时临时类型D.定义函数时所指定的函数类型14.关于虚函数的描述中正确的是(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中

5、对应的虚函数具有相同的参数个数和类型15.以下不属于构造函数特征的是(分数:2.00)A.构造函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定函数类型16.下列关于指针的操作中,错误的是(分数:2.00)A.两个同类型的指针可以进行比较运算B.可以用一个空指针赋给某个指针C.一个指针可以加上两个整数之差D.两个同类型的指针可以相加17.以下非法的赋值语句是(分数:2.00)A.n=(i=2,+i);B.j+;C.+(i+1);D.x=j0;18.继承机制的作用是(分数:2.00)A.信息隐藏B.数据封装C.定义新类D.数据抽象19.若有以下定义:int a=

6、1,2,3,4,5,6,7);char c1=b,c2=2;则数值不为 2 的表达式是(分数:2.00)A.a1B.d-c1C.a3-c2D.c2-020.C+语言中在 C 语言的基础上增加的特性不包括(分数:2.00)A.结构B.引用C.类和对象D.静态成员函数21.下列数据结构中具有记忆作用的是(分数:2.00)A.栈B.队列C.有序表D.二叉树22.对下列二叉树进行后序遍历的结果是(分数:2.00)A.B.C.D.23.静态成员函数没有(分数:2.00)A.返回值B.this 指针C.指针参数D.返回类型24.以下关于虚函数的叙述中不正确的是(分数:2.00)A.虚函数属于成员函数B.虚

7、函数不允许说明成静态的C.凡是虚函数必须用 virtual 说明D.虚函数可以被继承25.判断字符型变量 ch 是否为大写英文字母,应使用表达式(分数:2.00)A.ch=Avoid main( )int a=10,b=20;couta“,“bendl;int a=0,b=0;for(int i=1;i8;i+)a+=i;b+=a;couta“,“b“,“:aendl;couta“,“bendl;(分数:2.00)填空项 1:_43.有以下程序#includeiostreamusing namespace std;long fib(int n)if(n2)return(fib(n-1)+fib

8、(n-2);elsereturn 2;int main( )coutfib(3)endl;return 0;则该程序的输出结果应该是_。(分数:2.00)填空项 1:_44.下列程序不能通过编译,应该在划线部分填写的语句是_。#includeiostream.h#includestdlib.hdouble Func(int a,int b,char ch)double x;switch(ch)case+:x=double(a)+b;break;case -:x=double(a)-b;break;case *:x=double(a)*b;break;case/:if(B)x=double(a)

9、/b;elseexit(1);break;default:exit(1);_void main( )coutFunc(32,6,-)“,“;coutFunc(32,6, *)“,“;coutFunc(32,6,/)endl;(分数:2.00)填空项 1:_45.根据下面的主程序,完成类的一种构造函数的最简单形式。#includeiostream.hclass baseprivate:int num;public:_;void main( )base try(6);(分数:2.00)_46.下列程序的执行结果为_。#includeiostream.hint f(int i) return+i;i

10、nt g(intvoid main( )int a,b;a=b=0;a+=f(g(a);b+=f(f(b);cout“a=“a“,b=“bendl;(分数:2.00)填空项 1:_47.下列程序的运行结果是_。#includeiostream.hclass Apublic:virtual void use( ) cout“in A/n“;class B:public Apublic:virtual void use( ) cout“in B/n“;class C:public Bpublic:virtual void use( )cout“in C/n“;void main( )A*obj;o

11、bj=new C;obj-use( );delete obj;(分数:2.00)填空项 1:_48.完成下列类的构造函数,初始化语句为_。#includeiostream.hclass Testprivate:int x,y;public:void Test(int initx,int inity)_void printx( )coutx“-“y“=“x-y;void main( )Test x(300,200);x.printx( );(分数:2.00)填空项 1:_49.根据下列程序的执行结果,可以断定划线部分的修饰符应为_。执行结果:i9a football is created.a f

12、ootball is created.i=10a football is destroyed.a football is created.i=20a football is destroyed.a football is destroyed.源程序:#includeiostream.hclass Footballpublic:Football( )cout“a football is created.“endl;Football( )tout“a football is destroyed.“endl;void func(int i)_Football f1;Football f2;cout“

13、i=“iendl;void main( )func(10);func(20);(分数:2.00)填空项 1:_50.下列程序的输出结果为 2,请将程序补充完整。#ineludeiostreamhusing namespace std;class Basepublic:_ void fun( )cout1;class Derived: public Basepbulic:void fubn( )cout2;int main( )Base*P=new Derived;Pfun( );delete P;return 0;(分数:2.00)填空项 1:_二级 C+笔试-77 答案解析(总分:100.0

14、0,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.对于下列语句,正确的判断是for=(x=0;y=0;(y!=123)x+);(分数:2.00)A.是无限循环B.循环次数不定C.最多执行 4 次 D.最多执行 3 次解析:解析 本题考查 for 循环条件中三个表达式的执行顺序。首先执行表达式一,然后执行表达式二,如果表达式二为真,则循环体执行,然后执行表达式三,接着继续执行表达式二,如此循环。考生要注意的是,本题中表达式三中包含了变量 x 的增量操作,因此可以由表达式二和三一起控制循环体的执行次数。本题正确答案为 C。2.以下程序的输出结果为main( )int m=7

15、,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;coutxendl;(分数:2.00)A.27.000000 B.27.500000C.28.000000D.28.500000解析:解析 本题考查表达式值的类型由参与运算的所有变量的类型中优先级最高的变量类型所决定。不过要注意的是整型向 float 型转换时,将丢失小数部分,即向下取值。3.执行下列语句后,输出结果为cout.put(s);coutca;(分数:2.00)A.caB.sea C.sD.a解析:解析 本题很简单,考查 cout 对象的成员函数 put 方法和操作符的使用方法。4.设 a 和 b

16、均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是(分数:2.00)A.6.500000B.6C.5.500000D.6.000000 解析:解析 混合表达式的值的类型是由表达式中具有最高精度的类型确定,因此可知选项 B 可排除。注意 b/b 的结果应是 1.00000,而(int)a 则为 5,相加的结果还是 double 型,故正确答案应为 D。5.下列叙述中正确的是(分数:2.00)A.算法的空间复杂度是指算法程序的长度B.算法的效率只与所处理数据的规模有关,而与数据的存储结构无关C.数据的逻辑结构与存储结构是一一对应的D.上述三种说法都不对 解

17、析:解析 算法的空间复杂度,一般是指执行这个算法所需要的内存空间,它包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。因此,选项 A 中的说法是错误的。虽然算法的计算工作量(即时间复杂度)是问题规模的函数,但它是与数据的存储结构有密切的关系。因此,选项 B 中的说法也是错误的。一个数据结构中的各数据元素在计算机存储空间中的位置关系与逻辑关系有可能是不同的。因此,选项 C中的说法也是错误的,D 则是正确的。6.若有说明:int a34;则对 a 数组元素的非法引用是(分数:2.00)A.a02*1B.a13C.a4-20D.a04 解析:解析 在数组这部分的

18、知识里面,数组下标越界是一个比较容易忽略的问题,其下标是从 0 开始,至 n-1 为止,因此选项 D 是正确答案。7.在下面的函数声明中,存在着语法错误的是(分数:2.00)A.void BC(int a,int)B.void BD(int,int)C.void BE(int,int t=5)D.int BF(int x;int y) 解析:解析 函数声明时,可以指定其形参的默认值,不过要从右向左指定;可以省略形参名,仅以形参类型表示;形参表之间用逗号分割。因此,本题答案为 D。8.下列表示纯虚函数的成员函数是(分数:2.00)A.virtual int func (int);B.void f

19、unc(int)=0;C.virtual void func=0; D.virtual void flmc(int)解析:解析 本题考查纯虚函数的定义形式。由于纯虚函数在最后要有“=0”,故据此排除 A 和 D。而B 中没有出现 virtual 关键词,故正确答案为 C。9.为引入对象的同义词,对象的别名称为(分数:2.00)A.指针B.引用 C.枚举D.结构解析:解析 引用是 C+引入的一个新概念,表示变量或对象的别名。10.设有如下关系表:(分数:2.00)A.B. C.D.解析:解析 显然,关系表 T 是关系表 R 与 S 的并,即 T=RS。11.在结构化分析方法中,数据字典的作用是(

20、分数:2.00)A.存放所有需要处理的原始数据B.存放所有处理的结果C.存放所有的程序文件D.描述系统中所用到的全部数据和文件的有关信息 解析:解析 数据字典是结构化分析方法的核心,其作用是描述系统中所用到的全部数据和文件的有关信息。12.下列运算符中,不能重载的是(分数:2.00)A.?: B.+C.-D.=解析:解析 :?是 C+中唯一一个三目运算符,不能被重载。13.C+语言中函数返回值的类型决定于(分数:2.00)A.return 语句中的表达式类型B.调用函数的主调函数类型C.调用、函数时临时类型D.定义函数时所指定的函数类型 解析:解析 函数在定义时已经可以指定其函数类型,则函数返

21、回值类型就是该类型。14.关于虚函数的描述中正确的是(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 解析:解析 虚函数不能定义为静态函数;虚函数的作用在于继承,表现出动态性。所以,在派生类中定义的虚函数必须和基类中对应的虚函数具有相同的参数个数和类型。15.以下不属于构造函数特征的是(分数:2.00)A.构造函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定函数类型 解析:解析 类的构造函数不能指定函数类型,由系统采取

22、默认的处理方式,不需要用户参与。16.下列关于指针的操作中,错误的是(分数:2.00)A.两个同类型的指针可以进行比较运算B.可以用一个空指针赋给某个指针C.一个指针可以加上两个整数之差D.两个同类型的指针可以相加 解析:解析 本题考查指针能够进行的运算方式。指针可以加减一个整数,两个指针可以相减,表示指针之间的元素个数。指针相加则没有意义,因此本题答案为 D。17.以下非法的赋值语句是(分数:2.00)A.n=(i=2,+i);B.j+;C.+(i+1); D.x=j0;解析:解析 本题其实是考查各级运算符的优先级的。选项 A 赋值符号右侧为逗号表达式,其取值为最后一项表达式的值;选项 B

23、隐含表示为 j=j+1,这是很常用的一种赋值表达式。选项 D 赋值符号右侧为逻辑表达式,其值为 1 或 0,可以赋值给变量 x。将选项 C 展开为 i+1=i+1+1,这是错误的。18.继承机制的作用是(分数:2.00)A.信息隐藏B.数据封装C.定义新类 D.数据抽象解析:解析 继承是类的一个重要特性,没有继承,面向对象方法也就不存在。正是有了继承,才呈现出丰富多彩的类和对象。19.若有以下定义:int a=1,2,3,4,5,6,7);char c1=b,c2=2;则数值不为 2 的表达式是(分数:2.00)A.a1B.d-c1C.a3-c2D.c2-0 解析:解析 本题考查数组的定义、初

24、始化及其引用,以及对字符 ASCII 码值的熟悉程度。解本题的关键在于熟悉字符的 ASCIII 码值。字符在进行数学运算时取其ASCII 码值,其中b的 ASCII 码值为98,d的 ASCII 码值为 100,字符2的 ASCII:码值为 50。根据以上知识,可知 D 选项中表达式 c2-0的值为 50。20.C+语言中在 C 语言的基础上增加的特性不包括(分数:2.00)A.结构 B.引用C.类和对象D.静态成员函数解析:解析 本题很简单,不过考生要注意引用是 C+的新特性。只有结构是 C 语言也有的特性。21.下列数据结构中具有记忆作用的是(分数:2.00)A.栈 B.队列C.有序表D.

25、二叉树解析:解析 栈是按照“先进后出”(FILO-First In Last Out)或“后进先出”(LIFO-Last In First Out)的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。因此,栈具有记忆作用。22.对下列二叉树进行后序遍历的结果是(分数:2.00)A. B.C.D.解析:解析 按照二叉树后序遍历的方法:在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。对本题中的二叉树进行后序遍历的结果应是 ZBTYCPXA。23.静态成员函数没有(

26、分数:2.00)A.返回值B.this 指针 C.指针参数D.返回类型解析:解析 this 指针是系统隐含的用于指向当前对象的指针。由于静态函数是同类中所以对象都共享的函数,在内存当中只存在一份,不属于某个对象所有,所以静态函数没有 this 指针。24.以下关于虚函数的叙述中不正确的是(分数:2.00)A.虚函数属于成员函数B.虚函数不允许说明成静态的C.凡是虚函数必须用 virtual 说明 D.虚函数可以被继承解析:解析 虚函数的引入是为了解决动态绑定问题,使类的实例表现出多态性,虚函数在继承后依然保持虚函数特性,此时不需要用 virtual 关键词修饰。25.判断字符型变量 ch 是否

27、为大写英文字母,应使用表达式(分数:2.00)A.ch=Avoid main( )int a=10,b=20;couta“,“bendl;int a=0,b=0;for(int i=1;i8;i+)a+=i;b+=a;couta“,“b“,“:aendl;couta“,“bendl;(分数:2.00)填空项 1:_ (正确答案:a,b 重定义)解析:解析 在本题中 for 循环外围的大括号对没有实质含义,仅用于函数的作用域范围。如果去掉该括号,编译错误就会发生,因为变量 a,b 出现了重定义错误。43.有以下程序#includeiostreamusing namespace std;long

28、fib(int n)if(n2)return(fib(n-1)+fib(n-2);elsereturn 2;int main( )coutfib(3)endl;return 0;则该程序的输出结果应该是_。(分数:2.00)填空项 1:_ (正确答案:4)解析:解析 本题主要考查 C+中递归函数,主函数通过调用 fib( )函数,fib( )函数的内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用。主函数通过实参将值 3 赋给 fib( )函数的形参 n,由于 n=3 满足 if 分支语句条件,因此函数进行递归调用,即计算 fib(2)和fib(1)的值;将 2

29、赋给 fib( )函数的形参后,由于 n=2 不满足 if 语句条件,因此程序退出递归,返回2;将 1 赋给 fib( )函数的形参后,函数同样返回 2。因此函数递归调用的最终结果为返回 2 +2=4,即fib(3)=4,程序最后输出值为 4。44.下列程序不能通过编译,应该在划线部分填写的语句是_。#includeiostream.h#includestdlib.hdouble Func(int a,int b,char ch)double x;switch(ch)case+:x=double(a)+b;break;case -:x=double(a)-b;break;case *:x=do

30、uble(a)*b;break;case/:if(B)x=double(a)/b;elseexit(1);break;default:exit(1);_void main( )coutFunc(32,6,-)“,“;coutFunc(32,6, *)“,“;coutFunc(32,6,/)endl;(分数:2.00)填空项 1:_ (正确答案:return x;)解析:解析 本题函数声明时指定了函数的返回值为 double,因此在函数体中必须存在一个 return 语句。45.根据下面的主程序,完成类的一种构造函数的最简单形式。#includeiostream.hclass basepriva

31、te:int num;public:_;void main( )base try(6);(分数:2.00)_解析:46.下列程序的执行结果为_。#includeiostream.hint f(int i) return+i;int g(intvoid main( )int a,b;a=b=0;a+=f(g(a);b+=f(f(b);cout“a=“a“,b=“bendl;(分数:2.00)填空项 1:_ (正确答案:a=3,b=2)解析:解析 本题考查函数间引用传递的知识点。g(a)执行之后,返回值为 1,a 也变为 1,这就是引用传递的特点。然后执行 f(1),返回值为 2,此时 a=2+1

32、,故 a 此时为 3。由于 f(b)不具有引用传递的特征,因此,执行后 b=0+2,结果为 2。47.下列程序的运行结果是_。#includeiostream.hclass Apublic:virtual void use( ) cout“in A/n“;class B:public Apublic:virtual void use( ) cout“in B/n“;class C:public Bpublic:virtual void use( )cout“in C/n“;void main( )A*obj;obj=new C;obj-use( );delete obj;(分数:2.00)填空

33、项 1:_ (正确答案:in C)解析:解析 本题考查虚函数和多态性。原本 obj 指向祖先类,随后被赋值,指向新的子孙类,则在使用 use 这个重载的虚函数时,根据当前指向可确定调用子孙的同名虚函数。48.完成下列类的构造函数,初始化语句为_。#includeiostream.hclass Testprivate:int x,y;public:void Test(int initx,int inity)_void printx( )coutx“-“y“=“x-y;void main( )Test x(300,200);x.printx( );(分数:2.00)填空项 1:_ (正确答案:x=

34、initx; y=inity;)解析:解析 本题考查的是类的私有数据如何从接口成员函数那里得到数据的。本题虽然简单,却体现了类的数据封装思想,并指明了如何完成这种封装。49.根据下列程序的执行结果,可以断定划线部分的修饰符应为_。执行结果:i9a football is created.a football is created.i=10a football is destroyed.a football is created.i=20a football is destroyed.a football is destroyed.源程序:#includeiostream.hclass Foot

35、ballpublic:Football( )cout“a football is created.“endl;Football( )tout“a football is destroyed.“endl;void func(int i)_Football f1;Football f2;cout“i=“iendl;void main( )func(10);func(20);(分数:2.00)填空项 1:_ (正确答案:static)解析:解析 观察一下输出中对象的构造函数和析构函数的执行次数可以看出,再次进入时某对象没有被构造,亦即该对象在 func 执行后没有被销毁,再次进入时则不需要重构,可以

36、体现这种功能的标识符只有 static。50.下列程序的输出结果为 2,请将程序补充完整。#ineludeiostreamhusing namespace std;class Basepublic:_ void fun( )cout1;class Derived: public Basepbulic:void fubn( )cout2;int main( )Base*P=new Derived;Pfun( );delete P;return 0;(分数:2.00)填空项 1:_ (正确答案:virtual)解析:解析 本题考查虚函数的概念。在 C+中,一个基类的指针可以用于指向它的派生类对象。而且通过这样的指针调用虚函数时,被调用的是该指针实际指向的对象类的那个重定义版本。在本题中,通过对象指针 P 调用的是派生类中重定的。fun 函数,那么基类中的 fun 只有是虚函数才能满足要求。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1