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

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

1、二级 C+-240 及答案解析(总分:67.50,做题时间:90 分钟)一、选择题(总题数:36,分数:67.50)1.有如下程序段: int *a=new int2; a0=0; a1=1; int *b= cout*b; 运行这个程序段将输出_。(分数:2.50)A.整数 1B.a0的地址C.a1的地址D.整数 02.有如下程序: #includeiostream using namespace std; class Instrument public: virtual void Display()=0; ; class Piano:public Instrument public: vo

2、ld Display()/*函数体程序略*/ ; int main() Instrument s; Instrument*p=0; /.; return 0; 下列叙述中正确的是_。(分数:2.50)A.语句“Insturment*p=0;”编译时出错B.语句“Instrument s;”编译时出错C.类 Piano 中的 Display 函数不是虚函数D.类 Instrumen 是一个虚基类3.字符串“a+b=12/n/t”的长度为_。(分数:2.50)A.12B.10C.8D.64.下面程序的运行结果为 # include iostreamh void main( ) for(int a

3、= 0,x =0;! xa = 10;a+) a+; cout a endl; (分数:1.00)A.10B.11C.12D.05.有如下 4 个语句: coutAsetfill(*)1eftsetw(7)Bendl; coutsetrill(*)(1eftsetw(7)ABendl; coutAserfill(*)rightsetw(7)Bendl; coutsetfill(x)rightsetw(7)ABendl; 其中能显示 A* * * * * *B 的是 _ 。(分数:2.00)A.和B.和C.和D.和6.下面关于常成员函数的说法中正确的是_。(分数:2.50)A.常成员函数不能修改

4、任何的数据成员B.常成员函数只能修改一般的数据成员C.常成员函数只能修改常数据成员D.常成员函数只能通过常对象来调用7.下列有关运算符重载的叙述中,正确的是_。(分数:1.00)A.运算符重载是多态性的一种表现B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数重载D.重载运算符时可以改变其结合性8.下列叙述中正确的是(分数:2.00)A.所有形态的二叉树都只能采用链式存储结构B.循环队列是队列的一种存储方式C.栈只能采用顺序存储结构D.循环队列与循环链表都属于链式存储结构9.算法的空间复杂度是指_。(分数:2.50)A.算法在执行过程中所需要的计算机存储空间B.

5、算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数10.关键字 unsigned 不能修饰的类型是_。(分数:2.00)A.charB.intC.floatD.long int11.不能作为重载函数的调用的依据是(分数:1.00)A.参数个数B.参数类型C.函数类型D.函数名称12.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.可以通过重载创造出新的运算符B.可以为重载运算符函数的参数设置默认值C.可以将部分运算符函数重载为非成员函数D.可以将任意运算符函数重载为静态成员函数13.下列语句段将输出字符“*“的个数为_。 int i=100

6、; while(1) i-; if(i=0) break; cout“*“; (分数:2.50)A.98 个B.99 个C.100 个D.101 个14.下列叙述中正确的是_。(分数:2.50)A.C 程序中的注释只能出现在程序的开始位置和语句的后面B.C 程序书写格式严格,要求一行内只能写一个语句C.C 程序书写格式自由,一个语句可以写在多行上D.用 C 语言编写的程序只能放在一个程序文件中15.下列程序的运行结果为_。 # includeiostream.h templateclass TT class FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b

7、3)a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+a3;); void main() FFintx(int(1.1),2.3),y(int(4.2),5,6); coutx.Sum()“y.Sum()encIl;(分数:2.50)A.6.1 15.2B.6 15C.6 15.2D.6.1 1516.下面程序的运行结果是 #includeiostream,h void fun(int*a,int*b) int X= *a; * a= *b; *b=X; cout *a *b“ “; void main() int x=1, y=2; fun(B.MyClock

8、operator+(MyClock, MyClock);C.MyClock operator+(long, long);D.MyClock operator+(long, MyClock);20.有如下类定义: class Person public: void SetAge(double val); private: double Age; ; 若要在类体外给出对成员函数 SetAge 的定义,下列选项中正确的是_。(分数:1.00)A.Person:SetAge(double val) Age=val;B.void Person:SetAge(double val)Age=val;C.Pe

9、rson:void SetAge(double val)Age=val;D.void:SetAge(double val)Age=val;21.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(分数:1.00)A.publicB.protectedC.privateD.static22.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.staticC.protectedD.private23.下面程序的输出是 main() int x=100, a=10, b=20, ok1=5, ok2=0; if(ab) if(b! =15

10、) if( ! ok1) else if(ok2) x= 10 x=-1 coutxend1; (分数:2.00)A.-1B.0C.1D.不确定的值24.下列程序的运行结果为 #includeiostream.h void main( ) int a2; int ba1; cout a/b endl; (分数:2.00)A.0.66667B.0C.0.7D.0.6666666625.有如下类定义: class B public:void funl() private:void fun2() protected:void fun3() ; class D:public B protected:v

11、oid fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是_。(分数:2.50)A.obj.fun1()B.obj.fun2()C.obj.fun3()D.obj.fun4()26.执行以下程序时,输入一行字符串为“Thank you very much!”,程序的输出结果为_。 #includeiostream using namespace std; int main() char a100; cina; couta“/n“; return 0;(分数:2.00)ATB.ThankC.Thank you very much!D.Thank you27.有如下

12、程序: #includeiostream using namespace std; int main() int*p; *p=9; cout“the value at p:“*p; return 0; 编译运行程序将出现的情况是_。(分数:1.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错28.下列情况中,不会调用拷贝构造函数的是 _ 。(分数:2.00)A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋值给该类的另一个对象时C.函数的形参是类的对象,调

13、用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时29.对于语句 coutendlx;中的各个组成部分,下列叙述中错误的是(分数:2.00)A.“cout“是一个输出流对象B.“endl“的作用是输出回车换行C.“x“是一个变量D.“称作提取运算符30.在对函数进行原型声明时,下列语法成分中不需要的是_。(分数:1.00)A.函数返回类型B.函数参数列表C.函数名D.函数体31.下列关于数据库设计的叙述中,正确的是_。(分数:1.00)A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典32.有如下类声明

14、: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的定义中,正确的是_。(分数:1.00)A.SAMPLE: setValue(int n0) n=n0; B.void SAMPLE: setValue(int n0) n=n0;C.void setValue(int n0) n=n0;D.setValue(int n0) n=n0;33.有如下类定义: class A char*a: public: A():a() A(char*aa)/把 aa 所指字符

15、串拷贝到 a 所指向的存储空间 a=_; strcpy(a,aa); A()deletea; ; 横线处应填写的表达式是_。(分数:2.50)A.Dew charstrlen(aa)+1B.charstrlen(aa)+1C.charstrlen(aa)D.new charsizeof(aa)-134.下列选项中不全是 C+语言关键字的是(分数:2.00)A.const,break,defaultB.long,void,usingC.virtual,exterm,includeD.try,throw,this35.下列关于析构函数的描述中,错误的是_。(分数:2.50)A.析构函数可以重载B.

16、析构函数由系统自动调用C.每个对象的析构函数只被调用一次D.每个类都有析构函数36.下列是模板声明的开始部分,其中正确的是(分数:2.00)A.templateTB.templateclassT1,T2C.templateclassT1,classT2D.templateclassT1;classT2二级 C+-240 答案解析(总分:67.50,做题时间:90 分钟)一、选择题(总题数:36,分数:67.50)1.有如下程序段: int *a=new int2; a0=0; a1=1; int *b= cout*b; 运行这个程序段将输出_。(分数:2.50)A.整数 1B.a0的地址C.a

17、1的地址D.整数 0 解析:解析 本题考查的是程序执行相关知识。int*a=new int2的意思是从堆里申请一个 int 空间,里面存的值为 2,并将 a 指针指向那个 int 空间。 class Instrument public: virtual void Display()=0; ; class Piano:public Instrument public: vold Display()/*函数体程序略*/ ; int main() Instrument s; Instrument*p=0; /.; return 0; 下列叙述中正确的是_。(分数:2.50)A.语句“Insturme

18、nt*p=0;”编译时出错B.语句“Instrument s;”编译时出错 C.类 Piano 中的 Display 函数不是虚函数D.类 Instrumen 是一个虚基类解析:解析 抽象类只能作为别的类的基类,不能生成对象。3.字符串“a+b=12/n/t”的长度为_。(分数:2.50)A.12B.10C.8 D.6解析:解析 /n 表示回车,/t 是制表符。4.下面程序的运行结果为 # include iostreamh void main( ) for(int a = 0,x =0;! xa = 10;a+) a+; cout a endl; (分数:1.00)A.10B.11C.12

19、D.0解析:解析:在进入最后一次循环时 a=10,在循环体内执行“a+;”后 a=11,执行完该次循环体计算for 循环的增量部分后 a=12 小于 10,循环结束。5.有如下 4 个语句: coutAsetfill(*)1eftsetw(7)Bendl; coutsetrill(*)(1eftsetw(7)ABendl; coutAserfill(*)rightsetw(7)Bendl; coutsetfill(x)rightsetw(7)ABendl; 其中能显示 A* * * * * *B 的是 _ 。(分数:2.00)A.和B.和C.和 D.和解析:解析 本题考查 C+流的使用。set

20、fill()作用是设置填充字符;left 是使输出数据在指定宽度内左对齐;right 是使输出数据在指定宽度内右对齐。6.下面关于常成员函数的说法中正确的是_。(分数:2.50)A.常成员函数不能修改任何的数据成员 B.常成员函数只能修改一般的数据成员C.常成员函数只能修改常数据成员D.常成员函数只能通过常对象来调用解析:解析 C+中使用 const 关键字来说明函数称为常成员函数,常成员函数不能更新对象中的数据成员。7.下列有关运算符重载的叙述中,正确的是_。(分数:1.00)A.运算符重载是多态性的一种表现 B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数

21、重载D.重载运算符时可以改变其结合性解析:解析 重载运算符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5 个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为A。8.下列叙述中正确的是(分数:2.00)A.所有形态的二叉树都只能采用链式存储结构B.循环队列是队列的一种存储方式 C.栈只能采用顺序存储结构D.循环队列与循环链表都属于链式存储结构解析:解析 一

22、般来说,二叉树采用链式存储结构,但由于完全二叉树的特点,采用顺序存储也能方便地访问其中的每一个元素。因此,选项 A)中的说法是不对的。 所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行人队运算时,只要存储空间的第一个位置空闲,便可将元素加人到第一个位置,即将存储空间的第一个位置作为队尾。因此,循环队列是队列的一种顺序存储方式,选项 B)中的说法是正确的。 栈是特殊的线性表,它既能采用顺序存储结构,又能采用链式存储结构。因此,选项 C)中的说法也是不对的。 前面说过,循环队列是队列的一

23、种顺序存储方式,不属于链式存储结构因此,选项 D)中的说法也是不对的。9.算法的空间复杂度是指_。(分数:2.50)A.算法在执行过程中所需要的计算机存储空间 B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数解析:解析 算法的空间复杂度是指算法在执行过程中所需要的计算机存储空间。10.关键字 unsigned 不能修饰的类型是_。(分数:2.00)A.charB.intC.float D.long int解析:解析 实型常量指的是 float 和 double 两种数据类型,而 signed 和 unsigned 只对整型数起作用,用于确定它们的数

24、据范围(例如 16 位系统中,一个 signed int 是-3276832767,而 unsigned int 是065535)。unsigned 对浮点数是无意义的。11.不能作为重载函数的调用的依据是(分数:1.00)A.参数个数B.参数类型C.函数类型D.函数名称 解析:解析:所谓重载函数是指同一个函数名可以对应多个函数的实现,编译器会根据参数个数、参数类型和函数返回值类型不同而自动调用相应的函数。12.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.可以通过重载创造出新的运算符B.可以为重载运算符函数的参数设置默认值C.可以将部分运算符函数重载为非成员函数 D.可以将任

25、意运算符函数重载为静态成员函数解析:13.下列语句段将输出字符“*“的个数为_。 int i=100; while(1) i-; if(i=0) break; cout“*“; (分数:2.50)A.98 个B.99 个 C.100 个D.101 个解析:14.下列叙述中正确的是_。(分数:2.50)A.C 程序中的注释只能出现在程序的开始位置和语句的后面B.C 程序书写格式严格,要求一行内只能写一个语句C.C 程序书写格式自由,一个语句可以写在多行上 D.用 C 语言编写的程序只能放在一个程序文件中解析:解析 在程序中注释部分对程序的运行结果不产生任何影响,增加了程序的易读性,它可以出现在任

26、意位置,并且书写自由,一行内可以写多个语句,语句可以写在多行上;由于 C 语言编写的程序有很多的移植性,可以被多个程序文件引用。15.下列程序的运行结果为_。 # includeiostream.h templateclass TT class FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b3)a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+a3;); void main() FFintx(int(1.1),2.3),y(int(4.2),5,6); coutx.Sum()“y.Sum()encIl;(分数:2.50)A.

27、6.1 15.2B.6 15 C.6 15.2D.6.1 15解析:解析 本题考查模板函数的应用,表达式 int(1.1)和 int(4.2)是将 1.1 和 4.2 强制转换为整型。16.下面程序的运行结果是 #includeiostream,h void fun(int*a,int*b) int X= *a; * a= *b; *b=X; cout *a *b“ “; void main() int x=1, y=2; fun(B.MyClock operator+(MyClock, MyClock);C.MyClock operator+(long, long); D.MyClock o

28、perator+(long, MyClock);解析:解析 运算符重载不能改变当运算符作用于 C+内部类型的对象时的含义,例如不能改变运算符“+”作用于两个 long 型数据的含义,即运算符函数的参数中至少存在一个用户自定义对象。20.有如下类定义: class Person public: void SetAge(double val); private: double Age; ; 若要在类体外给出对成员函数 SetAge 的定义,下列选项中正确的是_。(分数:1.00)A.Person:SetAge(double val) Age=val;B.void Person:SetAge(dou

29、ble val)Age=val; C.Person:void SetAge(double val)Age=val;D.void:SetAge(double val)Age=val;解析:解析 函数的定义需要有返回值的类型,选项 A 错误;在类体外的成员函数的定义需要加上类名,用来限定成员函数的作用域,选项 D 错误;类名需要放在成员函数名的前面,返回类型的后面,选项 C 错误;答案为 B 选项。21.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(分数:1.00)A.public B.protectedC.privateD.static解析:解析 本题考查

30、点为类成员的访问权限,public 关键字修饰的类成员可以被类的对象通过成员操作符“.”直接访问,protected 和 private 则不能,而 static 不能单独修饰类的成员。22.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.static C.protectedD.private解析:解析 类的成员访问权限有 3 种:public(公用)、protected(保护)、private(私有)。23.下面程序的输出是 main() int x=100, a=10, b=20, ok1=5, ok2=0; if(ab) if(b! =15) if( !

31、ok1) else if(ok2) x= 10 x=-1 coutxend1; (分数:2.00)A.-1 B.0C.1D.不确定的值解析:解析 本题考察订语句的嵌套,else 总是与最近的那个 if 配对,只要考生按照逻辑表达式的值进行细心判断就可以得到正确的答案。考生需要注意的是,在 C+语言中,0 表示假,非 0 即为真,因此可以用数字作为逻辑判断的依据。24.下列程序的运行结果为 #includeiostream.h void main( ) int a2; int ba1; cout a/b endl; (分数:2.00)A.0.66667B.0 C.0.7D.0.66666666解

32、析:解析 表达式值的类型是由操作数的类型决定的,因为本题的两个数都是 int 型的,所以得出的结果也为 int 型,即去掉小数点后的部分,只取商的整数部分。25.有如下类定义: class B public:void funl() private:void fun2() protected:void fun3() ; class D:public B protected:void fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是_。(分数:2.50)A.obj.fun1() B.obj.fun2()C.obj.fun3()D.obj.fun4()解析:26.执

33、行以下程序时,输入一行字符串为“Thank you very much!”,程序的输出结果为_。 #includeiostream using namespace std; int main() char a100; cina; couta“/n“; return 0;(分数:2.00)ATB.Thank C.Thank you very much!D.Thank you解析:27.有如下程序: #includeiostream using namespace std; int main() int*p; *p=9; cout“the value at p:“*p; return 0; 编译运

34、行程序将出现的情况是_。(分数:1.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错 解析:解析 先定义指针变量,然后给指针变量赋初值有三种情况:用取地址运算符“ public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的定义中,正确的是_。(分数:1.00)A.SAMPLE: setValue(int n0) n=n0; B.void SAMPLE: setValue(int n0

35、) n=n0; C.void setValue(int n0) n=n0;D.setValue(int n0) n=n0;解析:解析 本题考查在类外定义类的成员函数,需要使用作用域限定符“:”,属于基础知识,本题答案为 B。33.有如下类定义: class A char*a: public: A():a() A(char*aa)/把 aa 所指字符串拷贝到 a 所指向的存储空间 a=_; strcpy(a,aa); A()deletea; ; 横线处应填写的表达式是_。(分数:2.50)A.Dew charstrlen(aa)+1 B.charstrlen(aa)+1C.charstrlen(

36、aa)D.new charsizeof(aa)-1解析:解析 对动态分配存储空间的考查,在 C+中,回车键需计一字符,即总的长度为 strlen(aa)+1。34.下列选项中不全是 C+语言关键字的是(分数:2.00)A.const,break,defaultB.long,void,usingC.virtual,exterm,include D.try,throw,this解析:35.下列关于析构函数的描述中,错误的是_。(分数:2.50)A.析构函数可以重载 B.析构函数由系统自动调用C.每个对象的析构函数只被调用一次D.每个类都有析构函数解析:解析 析构函数没有参数,所以不能重载,A 项说

37、法错误。B、C、D 项说法正确。36.下列是模板声明的开始部分,其中正确的是(分数:2.00)A.templateTB.templateclassT1,T2C.templateclassT1,classT2 D.templateclassT1;classT2解析:解析 本题考核模板的声明。模板声明的开始部分为:template类型形参表。其中,类型形参表可以包含基本数据类型,也可以包含类类型。类型形参需要加前缀 class。如果类型形参多于一个,则每个类型形参都要使用 class。形参表中的参数是惟一的,而且至少在函数定义体中出现一次。形参表中至少有一个形参的类型必须用类型形参表中的形参来定义。所以只有 C 选项的声明是正确的。

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

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

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