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

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

1、二级 C+模拟 498及答案解析(总分:153.50,做题时间:90 分钟)一、选择题(总题数:40,分数:69.50)1.下列关于模板的说法正确的是_。(分数:1.00)A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数2.下面关于对象概念的描述中, _ 是错误的。(分数:2.00)A.对象就是 C语言中的结构体变量B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的3.以下程序的输出结果是 #includeiostreamh void

2、main() int x=1,y=3; cout x+ “ , “; int x=0;X+=y*2; coutx“ ,“y“ ;“; coutx“ ,“y; (分数:1.00)A.1,6,3,1,3B.1,6,3,6,3C.1,6,3,2,3D.1,7,3,2,34.有如下类定义: class Box public: Box(int h, int w, int r):wid(w), len(r), hei(h) private: int len, wid, hei; ; Box类中 3个数据成员的初始化顺序为_。(分数:1.00)A.len,hei,widB.len,wid,heiC.hei,

3、wid,lenD.wid,len,hei5.下列程序的输出结果是 #includeiostreamh void main( ) double d=3.2; int x,y; x=12; y=(x+38)/50; cout y * d end1;(分数:1.00)A.3B.3,2C.0D.3076.下列程序执行结果是_。 #includeiostream.h class A public; int a; A():a(10)coutaend1; ; void main() A obj1; A obj2(obj1); cout“ “obj2.aend1; (分数:2.50)A.10 10B.编译错误

4、 缺少拷贝构造函数C.10 随机数D.随机数 随机数7.下列数据结构中,属于非线性结构的是_。(分数:1.00)A.循环队列B.带链队列C.二叉树D.带链栈8.若已经声明了函数原型“void fun(int a,double b=0.0);”,则下列重载函数声明中正确的是_。(分数:3.00)A.void fun(int a=90,double b=0.0);B.int fun(int a,double );C.void fun(double a,int );D.bool fun(int a,double b=0.0);9.下面关于 break语句的描述中,不正确的是(分数:1.00)A.br

5、eak可以用于循环体内B.break语句可以在 for循环语句中出现多次C.break语句可以在 switch语句中出现多次D.break语句可用于 if条件判断语句内10.有如下模板声明: templatetypename T1,typename T2class A; 下列声明中,与上述声明不等价的是_。(分数:2.50)A.templateclass T1,class T2class A;B.templateclass T1,typename T2class A;C.templatetypename T1,class T2class A;D.templatetypename T1,T2cl

6、ass A;11.对于模板定义关键宁 class和 typename说法不正确的是 _ 。(分数:1.00)A.程序中的 class并不能都替换为 typenameB.class和 typename都可互相替换C.程序中的 typename都能替换为 classD.程序中的部分 class可以替换为 typename12.有如下程序: #include iostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getCount()return count; p

7、rivate: static int count; ; int MyClass:count=0; int main() MyClass obj; coutobj.getCount(); MyClass*ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 执行这个程序的输出结果是_。(分数:1.00)A.121B.232C.221D.12213.在下面程序中,A、B、C、D 四句编译时不会出错的是 _ 。 #include iostream using namespace s

8、td; class Base public: Base(); Base(int e):count(C) virtual void print() const = 0; private: int count; ; class Derived :public Base public: Derived():Base(0) Derived(int C) :Base(C) void printt() constcout “Derived“endl: ; void main( ) Derived d(10); Base *pb; pb = /A Base Derived dd = *pb; /B Deri

9、ved /C Base bb = d; /D(分数:2.00)AaBBCCDD14.下面程序的运行结果是 _ 。 #includeiostream.h void main() int i1; while(i8) if(+i%3!2)continue; else couti; (分数:2.00)A.25B.36C.258D.36915.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型16.有以下程序: void main() i

10、nt a=5,b=4,c=3,d=2; if(abc) coutdend1; else if(c-1)=d)=1) coutd+1end1; else coutd+2end1; (分数:2.00)A.2B.3C.4D.编译时有错,无结果17.如下程序运行时的输出结果是 #includeiostream using namespace std; class ONE int c; public: ONE( ):c(0)eout1; ONE(int n):C(n)cout2; ; class TW0 ONE onel; ONE one2; public: TWO(int m):one2(m)eout

11、3; ; int main( ) TWO t(4); return 0; (分数:2.00)A.3B.23C.123D.21318.在一个单链表中,若 p所指结点不是最后结点,则删除 p所指结点的后继结点的正确操作是 _。(分数:2.00)A.p=pnextB.pnextpnextC.p-next=pnext-nextD.p-next=p19.软件生命周期是指_。(分数:1.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程20.下列字符串中不能作为 C+标识符使用的是_。(分数:1.00)A.IN

12、TB.testC._1481D.1temp21.下列关于类成员对象构造函数调用顺序的叙述中,正确的是_。(分数:2.00)A.与它们在初始化列表中的顺序相同B.与它们在类中声明的顺序相同C.与析构函数的调用顺序相同D.顺序不确定22.下列程序的运行结果是_。 #includeiostream.h classA int a; public: A()a=0; A()int aa a=aa; couta+; ; void main() Ax,y(2),z(3); coutendl; (分数:1.00)A.00B.23C.34D.2523.需求分析阶段的任务是确定(分数:1.00)A.软件开发方法B.

13、软件开发工具C.软件开发费用D.软件系统功能24.软件生命周期是指_。(分数:1.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程25.在 C+中,cin 是个_。(分数:2.50)A类B.对象C.模板D.函数26.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getCount()return count;) privat

14、e: static int count; ; int MyClass:count=0; int main() MyClass obj; coutobj.getCount(); MyClass*ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 程序的输出结果是_。(分数:2.00)A.121B.232C.221D.12227.下列有关运算符重载的叙述中,正确的是_。(分数:1.00)A.运算符重载是多态性的一种表现B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算

15、符都可以作为非成员函数重载D.重载运算符时可以改变其结合性28.有如下程序: #includeiostream using namespace std; class Point int x,y; public: Point(int x1=0,int y1=0):x(x1),y(y1) int get()return x+y;) ; class Circle Point cente; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r) int get()return center.get()+radius

16、; ; int main() Circle c(3,4,5); coutc.get()endl; return 0; 运行时的输出结果是_。(分数:2.00)A.5B.7C.9D.1229.在 C+语言中,不合法的实型数据的是(分数:1.00)A.0123B.123e3C.21e35D.123030.下列虚基类的声明中正确的是_。(分数:1.00)A.class virtual B:public AB.virtual class B:public AC.class B:public A virtualD.class B:virtual public A31.下面是重载为非成员函数的运算符函数原

17、型,其中错误的是 _ 。(分数:2.00)A.Fraction operator+(Fraction, Fraction);B.Fraction operator-(Fraction);C.FractionD.Fraction32.若 MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列: MyTempdoublep2; MyTeraplongp32; 编译系统在处理上面的语句序列时,所生成的模板 MyTemp的实例的个数是_。(分数:2.50)A.1B.2C.3D.033.对于模板定义关键字 class和 typename说法不正确的是(分数:2.00)A.程序中的 class并

18、不能都替换为 typenameB.class和 typename都可互相替换C.程序中的 typename都能替换为 classD.程序中的部分 class可以替换为 typename34.将 E-R图转换为关系模式时,实体和联系都可以表示为_。(分数:2.50)A.属性B键C.关系D域35.已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是_。(分数:3.00)A.这是运算符-的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值36.有以下程序: v

19、oid fun(int a*a,int i,int i) int t; if(ij); t=ai;aiaj;ajt; fun(a,+i,-j); main() inta1,2,3,4,5,6,i; fun(a,0,5); for(i0;i(6;i+) cout(ai; 执行后输出结果是 _ 。(分数:2.00)A.6 5 4 3 2 1B.4 3 2 1 5 6C.4 5 6 1 2 3D.1 2 3 4 5 637.若已定义: int a 0,1,2,3,4,5,6,7,8,9, * pa, i ; 其中 0i9,则对 a数组元素不正确的引用是(分数:2.00)A.apaB.* ( publ

20、ic: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB的下列定义中,正确的是_。(分数:3.00)A.XB:XB(int a,int b):x(a),y(b)B.XB:XB(int a,int b):XA(a),y(b)C.XB:XB(int a,int b):x(a),XB(b)D.XB:XB(int a,int b):XA(a),XB(b)39.有如下程序: #includeiostream using namespace std; intmain() int f,f1=0,f2=1

21、; for(int i=3;i=6;i+) f=f1+f2; f1=f2;f2=f; coutfendl; return 0; 运行时的输出结果是_。(分数:3.00)A.2B.3C.5D.840.树是结点的集合,它的根结点数目是 _ 。(分数:2.00)A.有且只有 1B.1或多于 1C.0或 1D.至少 2二、基本操作题(总题数:1,分数:30.00)41.请使用 VC6或使用【答题】菜单打开 proj1 下的工程 proj1,该工程中包含程序文件 main.cpp,其中有关 TVSet(“电视机”)和主函数 main的定义。程序中位于每个“/ ERROR *found*”之后的一行语句有

22、错误,请加以改正。改正后程序的输出结果应该是: 规格:29 英寸,电源:开,频道:5,音量:18 规格:29 英寸,电源:关,频道:-1,音量:-1 注意:只修改每个“/ ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include iostream using namespace std; class TVSet /“电视机”类 const int size; int channel; /频道 int volume; /音量 bool on; /电源开关:true 表示开,false 表示关 public: / ERROR *found* TVSet(int size

23、) this - size(size); channel = 0; volume = 15; on = false; int getSize() const return size; /返回电视机规格 bool isOn() const return on; /返回电源开关状态 /返回当前音量,关机情况下返回-1 int getVolume() const return isOn()? volume:-1; /返回当前频道,关机情况下返回-1 int getChannel() const return isOn()? channel: -1; / ERROR *found* void turn

24、OnOff() const /将电源在“开”和“关”之间转换 on=! on; void setChannelTo (int chan) /设置频道(关机情况下无效) if (isOn() void setVolumeTo (int vol) /设置音量(关机情况下无效) if(isOn() void show_state() / ERROR *found* cout “规格:“ getSize() “英寸“ “,电源:“ (isOn()? “开“:“关“) “,频道:“ getChannel() “,音量:“ getVolume() endl; ; int main() TVSet tv(2

25、9); tv.turnOnOff(); tv.setChannelTo(5); tv.setVolumeTo(18); tv.show_state(); tv.turnOnOff(); tv.show_state(); return 0; (分数:30.00)_三、简单应用题(总题数:1,分数:30.00)42.请使用 VC6或使用【答题】菜单打开 proj2 下的工程 proj2,此工程中包含一个头文件 shape.h,其中包含了类 Shape、Point 和 Triangle的声明;包含程序文件 shape.cpp,其中包含了类 Triangle的成员函数和其他函数的定义;还包含程序文件

26、proj2.cpp,其中包含测试类 Shape、Point 和 Triangle的程序语句。请在程序中的横线处填写适当的代码并删除横线,以实现上述功能。此程序的正确输出结果应为:此图形是一个抽象图形,周长=0,面积=0 此图形是一个三角形,周长=6.82843,面积=2 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/ *found*”。 /shape.h class Shape public: virtual double perimeter() const return 0; /返回形状的周长 virtual double area() const retu

27、rn 0; /返回形状的面积 virtual const char * name() const return “抽象图形“; /返回形状的名称 ; class Point /表示平面坐标系中点的类 double x; double y; public: / *found* Point (double x0, double y0): _ /用 x0、y0 初始化数据成员 x、y double getX() const return x; double getY() const return y; ; class Triangle: public Shape / *found* _; /定义 3

28、个私有数据成员 public: Triangle (Point p1, Point p2, Point p3): point1 (p1), point2 (p2), point3 (p3) double perimeter () const; double area() const; const char * name() const return “三角形“; ; /shape.cpp #include “shape.h“ #include cmath double length (Point p1, Point p2) return sqrt (p1.getX() -p2.getX() *

29、 (p1.getX() -p2.getX() + (p1.getY() -p2.getY() * (p1.getY() -p2.getY(); double Triangle: perimeter () const /一个 return语句,它利用 length函数计算并返回三角形的周长 / *found* _; double Triangle:area() const double s = perimeter()/2.0; return sqrt (s * (s - length (point1, point2) * (s - length (point2, point3) * (s - l

30、ength (point3, point1); /proj2.cpp #include “shape.h“ #include iostream using namespace std; / *found* _ /show函数的函数头(函数体以前的部分) cout “此图形是一个“ shape.name() “,周长=“ shape.perimeter() “,面积=“ shape.area() endl; int main() Shape s; Triangle tri(Point(0,2), Point(2,0), Point(0,0); show(s); show(tri); return

31、 0; (分数:30.00)_四、综合应用题(总题数:1,分数:24.00)43.请使用菜单命令或直接用 VC6打开 下的工程 prj03。请完善下列程序,实现一个 Number类。Add 函数计算 2个 Number类对象之和,并将和作为 Number对象返回。这 2个 Number对象中各包含一个用字符串表示的 10进制正整数,均不超过 int的表示范围。在 main函数中给出了一组测试数据,使用这组数据进行测试时程序的输出应该是: 100 注意:只需在/*333*和/*666*之间填入所编写的若干语句,不要改动程序中的其他内容。 #includeiostream #includecstr

32、ing #includesstream #include “proj3.h“ using namespace std; Number:Number(char*n) num=new charstrlen(n)+1; strcpy(num, n); Number:Number(Number strcpy(num, n.num); Number:Number(int n) char*tmp=new char30; itoa(n, tmp, 10); /函数 itoa的功能是将 n转换为字符串,存放于 tmp指向的数组中 num=new charstrlen(tmp)+1; strcpy(num, t

33、mp); Number:Number() if(num) deletenum; Number Number:Add(Number n) /*333* /*666* nt main() Number num1(“32“); Number num2(“68“); Number coutnum3.GetNum(); writeToFile(“c:/test“); return 0; /proj3/proj3.h class Number private: char*num; /具体数字,num0表示最高位的数 public: Number(); Number(char*n); Number(Numb

34、er Number(int n); Number Add(Number n); char*GetNum()return num; ; void writeToFile(const char*path); (分数:24.00)_二级 C+模拟 498答案解析(总分:153.50,做题时间:90 分钟)一、选择题(总题数:40,分数:69.50)1.下列关于模板的说法正确的是_。(分数:1.00)A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数 解析:解析 在 C+中规定如果一个类被声明为类模板,那么其中的所

35、有成员函数就都成为了模板函数。2.下面关于对象概念的描述中, _ 是错误的。(分数:2.00)A.对象就是 C语言中的结构体变量 B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的解析:3.以下程序的输出结果是 #includeiostreamh void main() int x=1,y=3; cout x+ “ , “; int x=0;X+=y*2; coutx“ ,“y“ ;“; coutx“ ,“y; (分数:1.00)A.1,6,3,1,3B.1,6,3,6,3C.1,6,3,2,3 D.1,7,3,2,3解析:

36、解析 coutx+;语句中,程序先输出 x的值,然后再加 l,所以结果为 1,此时 x的值为2;布 int x=0;x+=y*2;语句中,将 0的值赋给 x,然后再运算 x+=y*2 的值,结果为 x=6(此时 x的值为局部变量),y 的值不变,在最后在执行了 x语句后的值,所以应为 2。4.有如下类定义: class Box public: Box(int h, int w, int r):wid(w), len(r), hei(h) private: int len, wid, hei; ; Box类中 3个数据成员的初始化顺序为_。(分数:1.00)A.len,hei,widB.len,

37、wid,hei C.hei,wid,lenD.wid,len,hei解析:解析 类构造函数中的成员初始化顺序是按照成员在类体中的声明次序来确定的,而不是按照初始化列表中的次序,所以本题中成员的初始化顺序为 len,wid,hei,答案为 B选项。5.下列程序的输出结果是 #includeiostreamh void main( ) double d=3.2; int x,y; x=12; y=(x+38)/50; cout y * d end1;(分数:1.00)A.3B.3,2C.0 D.307解析:6.下列程序执行结果是_。 #includeiostream.h class A publi

38、c; int a; A():a(10)coutaend1; ; void main() A obj1; A obj2(obj1); cout“ “obj2.aend1; (分数:2.50)A.10 10 B.编译错误 缺少拷贝构造函数C.10 随机数D.随机数 随机数解析:解析 本题考查拷贝构造函数的知识。如果类中没有实现拷贝构造函数可以完成数据成员的自动赋值,对于复杂对象,则可能需要显式定义拷贝构造函数。7.下列数据结构中,属于非线性结构的是_。(分数:1.00)A.循环队列B.带链队列C.二叉树 D.带链栈解析:解析 树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。8.若已

39、经声明了函数原型“void fun(int a,double b=0.0);”,则下列重载函数声明中正确的是_。(分数:3.00)A.void fun(int a=90,double b=0.0);B.int fun(int a,double );C.void fun(double a,int ); D.bool fun(int a,double b=0.0);解析:解析 函数重载的原则就是至少要在参数个数或参数类型上有所不同,且如果函数只是函数类型不同的,而其他完全相同,也不能作为重载函数来使用。9.下面关于 break语句的描述中,不正确的是(分数:1.00)A.break可以用于循环体内

40、B.break语句可以在 for循环语句中出现多次C.break语句可以在 switch语句中出现多次D.break语句可用于 if条件判断语句内 解析:解析 本题考查的是 break语句的使用,break 可以结束 switch语句和 for10.有如下模板声明: templatetypename T1,typename T2class A; 下列声明中,与上述声明不等价的是_。(分数:2.50)A.templateclass T1,class T2class A;B.templateclass T1,typename T2class A;C.templatetypename T1,clas

41、s T2class A;D.templatetypename T1,T2class A; 解析:解析 类模板定义的格式为 template模板形参表类声明 选项 A、B、C 是正确的定义格式,选项 D是错误的。11.对于模板定义关键宁 class和 typename说法不正确的是 _ 。(分数:1.00)A.程序中的 class并不能都替换为 typenameB.class和 typename都可互相替换 C.程序中的 typename都能替换为 classD.程序中的部分 class可以替换为 typename解析:12.有如下程序: #include iostream using name

42、space std; class MyClass public: MyClass()+count; MyClass()-count; static int getCount()return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; coutobj.getCount(); MyClass*ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 执行这个程序的输出

43、结果是_。(分数:1.00)A.121 B.232C.221D.122解析:解析 本题考查静态数据成员。静态数据成员在内存中只占一份空间,静态数据成员属于类,即使不定义对象,也会给静态数据成员分配空间,可以被引用。本题中先是定义了一个对象 obj,执行构造函数使得静态数据成员 count变为了 1,然后又定义了指针对象,执行构造函数后,count 变为了 2,释放指针后,执行析构函数,使得 count变为了 1。所以本题答案为 A。13.在下面程序中,A、B、C、D 四句编译时不会出错的是 _ 。 #include iostream using namespace std; class Bas

44、e public: Base(); Base(int e):count(C) virtual void print() const = 0; private: int count; ; class Derived :public Base public: Derived():Base(0) Derived(int C) :Base(C) void printt() constcout “Derived“endl: ; void main( ) Derived d(10); Base *pb; pb = /A Base Derived dd = *pb; /B Derived /C Base b

45、b = d; /D(分数:2.00)Aa BBCCDD解析:解析 B 和 C不符合赋值兼容规则,D 不能建立抽象类的对象。14.下面程序的运行结果是 _ 。 #includeiostream.h void main() int i1; while(i8) if(+i%3!2)continue; else couti; (分数:2.00)A.25B.36C.258 D.369解析:解析 应镇先做+运算,然后进行%运算,最后比较不等式,实际上最后输出的结果就是被 3除,余数为 2的不大于 8的数。15.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函

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

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

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