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

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

1、二级 C+笔试 70及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.有如下函数模板定义: templatetypename T1,int a2,int a3 T1 sam(T1 a1) return(al+a2+a3); 则以下调用中正确的是(分数:2.00)A.sumint,4,3(5);B.sum4,3(5);C.sumint,int,int(5);D.sam(5);2.下面不属于软件工程 3个要素的是(分数:2.00)A.工具B.过程C.方法D.环境3.以下运算符中不能重载的运算符是(分数:2.00)A.newB.sizeofC*

2、D.+4.下列数组的定义中,会产生错误的是(分数:2.00)A.int a=0,1,2,3,4,5,6;B.int a10=0,1,2,3,4,5,6;C.char a5=“hello“;D.char a5=h,e,l,l,o;5.数据库设计包括两个方面的设计内容,它们是(分数:2.00)A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计6.若有以下程序: #includeiostream usingnamespacestd; classA private: int x; public: int x; void setx(int i) x=i;

3、 int getx() return x; ; class B:public A private: int m; public: int p; void setvalue (int a,int b,int C) setx(A) ; z=b; m=c; void display() coutgetx()“,“z“,“mend1; ; int main() B obj; obj.setvalue(2,3,4); objdisplay(); return 0; 程序运行以后的输出结果是(分数:2.00)A.产生语法错误B.2,3,4C.2,2,2D.4,3,27.有如下程序: #includeios

4、tream using namespace std; class sample private: int x,y; public: sample(int i,int j) x=i; y=j; void disp() cout“disp1“end1; void disp()const cout“disp2“end1; ; int main() const sample a(1,2); a.disp(); return 0; 该程序运行后的输出结果是(分数:2.00)A.disp1B.disp2C.disp1 disp2D.程序编译时出错8.实现运行时的多态性要使用(分数:2.00)A.重载函数B

5、.析构函数C.构造函数D.虚函数9.已知枚举类型定义语句为: enum Token NAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则下列说法中错误的是(分数:2.00)A.枚举常量 NAME的值为 1B.枚举常量 NUMBER的值为 1C.枚举常量 MINUS的值为 6D.枚举常量 PRINT的值为 1010.有以下程序: #includeiostream using namespace std; class sample private: int n; public: sample() sample(int m) n=m; sample add(sample s1,s

6、ample s2) this-n=s1.n+S2.n; return(*this); void disp() cout“n=“nend1; ; int main() sample s1(10),s2(5),s3; s3.add(s1,s2); s3.disp(); retyrn 0; 程序运行后,输出的结果是(分数:2.00)A.n=10B.n=5C.n=20D.n=1511.执行语句序列 ofstream outfile(“data.dat“); if()cout“ok“;else cout“fail“; 后,如果文件打开成功,显示“ok”,否则显示“fail”。由此可知,上面 if语句的“

7、” 处的表达式是(分数:2.00)A.outfilfail()或 outfileB.outfilgood()或!outfileC.outfilgood()或 outfileD.outfilfail()或!outfile12.对建立良好的程序设计风格,下面描述正确的是(分数:2.00)A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无13.设有下列二叉树: (分数:2.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA14.有以下程序: #includeiostrearn using namespace std; cla

8、ss sample private: int x; static int y; public: sample (int A) ; static void print (sample s); ; sample:sample(int A) x=a; y+=x; void sample:print(sample s) cout“x“s.x“,y=“yend1; int sample:y=0; int main() sample s1(10); sample s2(20); sample:print(s2); return 0; 程序运行后的输出结果是(分数:2.00)A.x=10,y=20B.x=2

9、0,y=30C.x=30,y=20D.x=30,y=3015.下列关于关系运算的叙述中正确的是(分数:2.00)A.投影、选择、连接是从二维表的行的方向来进行运算B.并、交、差是从二维表的列的方向来进行运算C.投影、选择、连接是从二维表的列的方向来进行运算D.以上三种说法都不对16.有如下程序: #includeiostream using namespace std; int main() cout.fill(*); cout.width(5); coutscientific314.15926535end1; return 0; 程序运行后,输出的结果是(分数:2.00)A.3.141593

10、e+002B.3.1416e+002C.*3.14e+002D.314.1617.若有定义:int k,*q;,则下列各选项中赋值表达式正确的是(分数:2.00)A.q=(那么表达式 x+a%3*(int)(x+y)%2/4的值为U 【6】 /U。(分数:2.00)填空项 1:_42.函数 swap(arr,n)可完成对 arr数组从第 1个元素到第 n个元素两两交换。在运行调用函数中的语句后,a0和 a1的值分别为上U 【7】 /U。 a0=1;a1=2;swap(a,2);(分数:2.00)填空项 1:_43.下列程序的输出结果是U 【8】 /U #includeiostream usin

11、g namespace std; int main() int Bum=500; int public: sample(int i,int j) x=i; y=j; void disp() cout“disp1“end1; void disp()const cout“disp2“end1; ; int main() const sample a(1,2); a.disp(); return 0; 该程序运行后的输出结果是(分数:2.00)A.disp1B.disp2 C.disp1 disp2D.程序编译时出错解析:解析 本题考核常对象、常数据和常函数。C+中,在定义常对象时必须进行初始化,而

12、且不能被更新。如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数。题中,对象 a被定义成类sample的常对象,所以通过对象 a只能调用其常成员函数 disp()。所以程序最后输出 disp2。8.实现运行时的多态性要使用(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数 解析:解析 本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系:调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数

13、。9.已知枚举类型定义语句为: enum Token NAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则下列说法中错误的是(分数:2.00)A.枚举常量 NAME的值为 1 B.枚举常量 NUMBER的值为 1C.枚举常量 MINUS的值为 6D.枚举常量 PRINT的值为 10解析:解析 本题考核 C+数据类型中枚举。枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点:枚举类型的第一个常量默认值是 0;枚举类型常量的值允许彼此相同;虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数进行比较。由此可

14、知枚举常量 NAME的值应为 0。所以 A) 选项是错误的。10.有以下程序: #includeiostream using namespace std; class sample private: int n; public: sample() sample(int m) n=m; sample add(sample s1,sample s2) this-n=s1.n+S2.n; return(*this); void disp() cout“n=“nend1; ; int main() sample s1(10),s2(5),s3; s3.add(s1,s2); s3.disp(); re

15、tyrn 0; 程序运行后,输出的结果是(分数:2.00)A.n=10B.n=5C.n=20D.n=15 解析:解析 本题考核 this指针的应用。上述程序中,sample 类的 add成员函数中使用了 this 指针,this指针指向当前对象自身,该成员函数中的语句:this-n=s1.n+s2.n;,用于修改当前对象的数据成员 n的值,语句:return(*this);用于返回当前对象自身,即对当前对象进行了修改。 对于 main()函数调用 add成员函数语句“s3add(s1,s2);”。此时,this 指针指向的是对象 s3,执行该语句前,s3的数据成员 n未赋值,执行完该语句后,就

16、修改了 s3的私有成员 n的值,使其为 15。11.执行语句序列 ofstream outfile(“data.dat“); if()cout“ok“;else cout“fail“; 后,如果文件打开成功,显示“ok”,否则显示“fail”。由此可知,上面 if语句的“” 处的表达式是(分数:2.00)A.outfilfail()或 outfileB.outfilgood()或!outfileC.outfilgood()或 outfile D.outfilfail()或!outfile解析:解析 本题考核 C+的文件流。文件流对象中的成员函数 good()用于判定刚进行的操作是否成功,成功时

17、返回 true,否则返回 false。成员函数 fail()用于判定刚进行的操作是否失败,失败时返回tree,否则返回 false。12.对建立良好的程序设计风格,下面描述正确的是(分数:2.00)A.程序应简单、清晰、可读性好 B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无解析:解析 符号名的命名不仅要符合语法,而且符号名的命名应具有一定实际含义,以便于对程序功能的理解。所以,选项 B错误。 程序设计风格强调“清晰第一,效率第二”,而不是效率第一。所以,选项 C错误。程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但在程序中加入正确的注释能够

18、帮助读者理解程序,注释是提高程序可读性的重要手段。所以,选项 D错误。本题的正确答案为 A。13.设有下列二叉树: (分数:2.00)A.ABCDEFB.DBEAFC C.ABDECFD.DEBFCA解析:解析 二叉树的遍历分为先序、中序、后序三种不同方式。本题要求中序遍历,其遍历顺序应该为:中序遍历左子树访问根结点中序遍历右子树。按照定义,中序遍历序列是 DBEAFC,故答案为 B。14.有以下程序: #includeiostrearn using namespace std; class sample private: int x; static int y; public: sample

19、 (int A) ; static void print (sample s); ; sample:sample(int A) x=a; y+=x; void sample:print(sample s) cout“x“s.x“,y=“yend1; int sample:y=0; int main() sample s1(10); sample s2(20); sample:print(s2); return 0; 程序运行后的输出结果是(分数:2.00)A.x=10,y=20B.x=20,y=30 C.x=30,y=20D.x=30,y=30解析:解析 本题考核静态数据成员和静态成员函数的应

20、用。类 sample中定义两个私有成员 x和 y,其中 y为静态数据成员。并定义函数 print()为静态成员函数。在主函数中,定义对象 s1(10)时,通过构造函数使对象 s1的私有成员 x=10,静态数据成员 y=10。定义 s2(20)时,通过构造函数使对象 s2的私有成员 x=20,静态数据成员 y=10+20=30。程序最后调用静态成员函数 print输出对象 s2的私有成员 x的值20,对象 s1、s2 共享的静态数据成员 y的值 30。15.下列关于关系运算的叙述中正确的是(分数:2.00)A.投影、选择、连接是从二维表的行的方向来进行运算B.并、交、差是从二维表的列的方向来进行

21、运算C.投影、选择、连接是从二维表的列的方向来进行运算 D.以上三种说法都不对解析:解析 在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等运算。前者是将关系看成是元组的集合,这些运算主要是从二维表的行的方向来进行的:后者主要是从二维表的列的方向来进行运算。因此,选项 A与 B错误,选项 C正确。16.有如下程序: #includeiostream using namespace std; int main() cout.fill(*); cout.width(5); coutscientific314.159265

22、35end1; return 0; 程序运行后,输出的结果是(分数:2.00)A.3.141593e+002 B.3.1416e+002C.*3.14e+002D.314.16解析:解析 本题考核格式控制数据的输入输出。函数 setfill(char C) 用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满,设置的填充符一直有效,直到再次设置填充字符为止,如题中调用函数 setfill(*)将填充字符设置为,引,后又调用函数 setfill(#)将填充字符设置为#。函数 setw(int n)用于设置输入输出宽度,当实际数据的宽度大于设置的宽度时,仍按实际的

23、宽度输出,如题中数据 314.15926535的宽度大于 5,所以将会按实际输出。关键字scientific将浮点数按指数格式(科学表示法)输出。17.若有定义:int k,*q;,则下列各选项中赋值表达式正确的是(分数:2.00)A.q=(那么表达式 x+a%3*(int)(x+y)%2/4的值为U 【6】 /U。(分数:2.00)填空项 1:_ (正确答案:2.5)解析:解析 本题考核运算符的使用(包括类型、优先级、结合性)。强制类型转换符()将表达式 x+y的值转换为 int型,那么表达式“a%3*(int)(x+y)%2/4”结果将为整型,计算:7%3*7%2/4 的结果为 0,而x为

24、 double型,所以最后的结果为 2.542.函数 swap(arr,n)可完成对 arr数组从第 1个元素到第 n个元素两两交换。在运行调用函数中的语句后,a0和 a1的值分别为上U 【7】 /U。 a0=1;a1=2;swap(a,2);(分数:2.00)填空项 1:_ (正确答案:2,1)解析:解析 本题考核函数参数的传递。数组名作为函数参数传递的是数组的首地址,即实参数组名把实参数组的首地址传给了形参数组名,形参数组名就指向了相应的实参数组,就是说形参数组和实参数其实就是同一个数组,对形参数组元素的修改也同样影响到对应的实参数组元素。43.下列程序的输出结果是U 【8】 /U #in

25、cludeiostream using namespace std; int main() int Bum=500; int& ref=num; ref+=100; coutnumend1; return 0; (分数:2.00)填空项 1:_ (正确答案:600)解析:解析考核引用的使用。题中整型变量 ref定义为 num的引用,所以对 ref的作用等同于对 num的作用,所以 ref加上 100后,num 的值也就变成了 600。44.类模板的使用实际上是将类模板实例化成一个具体的U 【9】 /U。(分数:2.00)填空项 1:_ (正确答案:类)解析:解析 本题考核类模板的使用,使用类模

26、板时是将其定义实例化为一个真正的类。45.在下面横线上填上适当的语句,完成程序。 #includeiostream using namespace std; class Base int x; public: Base(int i)x=i; Base() ; class Derived:public Base public: U【10】 /U完成类 Derive构造函数的定义 ; int main() Derived Obj; return 0; (分数:2.00)填空项 1:_ (正确答案:Derived(int i):Base(i))解析:解析 本题考核派生类中构造函数的的定义。程序中,类

27、 Derived是基类 Base的公有派生。在类Derived的构造函数应该包括调用基类构造函数使基类的数据成员得以初始化。46.下面是“二维向量”vector2D 的定义,其中作为成员函数重载的运算符“+”的功能是将两向量的分量 x和 y对应相加,然后返回作为相加结果的新对象;请填空补充完整。 class vector2D double x; /x分量 double y; /y 分量 public: vector2D(double x0=0,double y0=0):x(x0),y(y0) void show(cout(,y); vector2D operator+(vector2D) ;

28、; U 【11】 /Uoperator + (vector2D A) return vector2D(U 【12】 /U); (分数:2.00)填空项 1:_ (正确答案:11vector2D: 12x+ax,y+a.y)解析:解析 本题考核运算符的重载。程序将运算符“+”重载为类 vector2D的成员函数,所以在函数定义处要加上类域控制,即 vector2D:。运算符“+”重载函数返回的是两个分量分别相加的值。47.已知:double A(double A) return +a;和 int A(int A) return+a;是一个函数模板的两个实例,则该函数模板定义为U 【13】 /U(

29、分数:2.00)填空项 1:_ (正确答案:templatetypename T)解析:TA(T A) return a+; 解析 本题考核函数模板的定义。通过两个实例知道该例中只有一种数据类型,所以在定义模板时只需定义一个模板参数 T。48.有以下程序: #includeiostream.h classA int x; public: A(int A) x=a; friend class B; ; class B public: void print(AA) a.x-; couta.xend1; ; void main() Aa(10); Bb; b.print(A) ; 程序执行后的输出结

30、果是U 【14】 /U。(分数:2.00)填空项 1:_ (正确答案:9)解析:解析本题考核友元类的应用。在程序中,类 B是类 A的友元类,因此,在类 B的所有成员函数中均可访问类 A的任何成员。在 main()中,先定义类 A的一个对象 a(10)和类 B的一个对象 b。然后通过对象 b调用其成员函数 print输出对象 a的私有成员 x的值减 1即 9。49.下面程序的输出结果是U 【15】 /U。 #includeiostream using namespace std; class base protected: int a; public: base()cout“0“: ; clas

31、s base1:virtual public base public: base1()cout“1“; ; class base2:virtual public base public base2()cout“2“; ; class derived:public base1,public base2 public: derived()cout“3“; int main() derived obj; coutend1; return 0; (分数:2.00)填空项 1:_ (正确答案:0123)解析:解析 本题考核含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最有调用派生类自己的构造函数。题中先调用base的构造函数,然后调用 base1、base2 的构造函数,最后调用 derived的构造函数。

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

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

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