【计算机类职业资格】国家二级(C++)机试-试卷24及答案解析.doc

上传人:刘芸 文档编号:1334588 上传时间:2019-10-17 格式:DOC 页数:15 大小:88KB
下载 相关 举报
【计算机类职业资格】国家二级(C++)机试-试卷24及答案解析.doc_第1页
第1页 / 共15页
【计算机类职业资格】国家二级(C++)机试-试卷24及答案解析.doc_第2页
第2页 / 共15页
【计算机类职业资格】国家二级(C++)机试-试卷24及答案解析.doc_第3页
第3页 / 共15页
【计算机类职业资格】国家二级(C++)机试-试卷24及答案解析.doc_第4页
第4页 / 共15页
【计算机类职业资格】国家二级(C++)机试-试卷24及答案解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、国家二级(C+)机试-试卷 24 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.数据流图中带有箭头的线段表示的是( )。(分数:2.00)A.控制流B.事件驱动C.模块调用D.数据流2.在下列原型所示的 C+函数中,按“传值“方式传递参数的是( )。(分数:2.00)A.voidf1(intx);B.voidf2(int*x);C.voidf3(constint*x);D.voidf4(int3.有如下程序: #include using namespace std; class Part public: Part(int x=0):val

2、(x) couty?x:y;中两个形参变量都是 int 型,而语句 intMax(intx,inty,intz=0)的前两个形参也都是 int 型,第三个形参定义默认值,那么这两个 Max函数在调用时它们的参数个数和参数类型都一样,因为函数重载要求形参类型或形参个数不同,所以要把intz=0 改为 intz,才能构成函数重载。 (3)主要考查成员函数的调用,因为 value 是私有成员,所以不能被类外函数直接调用,而且 value()的用法也是错误的,可以使用成员函数 objGetValue()得到value 的值。三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题

3、】菜单打开考生文件夹 proj2 下的工程 proj2,其中包含抽象类 Shape 的声明,以及在此基础上派生出的类 Rectangle 和 Circle 的声明,二者都有计算对象面积的函数 GetArea()和计算对象周长的函数 GetPerim()。程序中位于每个“*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:TheareaoftheCircleis785TheperimeteroftheCimleis314TheareaoftheRectangleis24TheperimeteroftheRectangleis20 注意:只在横线处填写适当的代码,不要改动

4、程序中的其他内容,也不要删除或移动“*found*”。#includeiostreamusingnamespacestd;classShapepublic:Shape()Shape()*found*_floatGetArea()=0;*found*_floatGetPerim()=0;classCircle:publicShapepublic:Circle(floatradius):itsRadius(radius)Circle()floatGetArea()return314*itsRadius*itsRadius;floatGetPerim()return628*itsRadius,pri

5、vate:floatitsRadius;classRectangle:publicShapepublic:*found*Rectangle(floatlen,floatwidth):_;Rectangle();virtualfloatGetArea()returnitsLength*itsWidth;floatGetPerim()return2*itsLength+2*itsWidth;virtualfloatGetLength()returnitsLength;virtualfloatGetWidth()returnitsWidth;private:floatitsWidth;floatit

6、sLength;intmain()*k*found*sp=newCircle(5);cout“TheareaOftheCircleis“sp-GetArea()end1;cout“TheperimeteroftheCircleis“sp-GetPerim()end1;deletesp;sp=newRectangle(4,6);cout“TheareaoftheRectangleis“sp-GetArea()end1;cout“TheperimeteroftheRectangleis“sp-GetPerim()end1;deletesp;return0;(分数:2.00)_正确答案:(正确答案:

7、(1)virtual (2)virtual (3)itsLength(len), itsWidth(width) (4)Shape* sp;)解析:解析:(1)和(2)主要考查考生对纯虚函数定义的掌握,纯虚函数前要添加关键字 virtual。 (3)主要考查考生对构造函数的掌握,使用成员列表初始化。 (4)主要考查考生对指针的掌握,由下一条语句:sp = new Circle(5),可知 sp 为 Shape 型指针。四、综合应用题(总题数:1,分数:2.00)43.请使用“答题”菜单或使用 VC6 打开考生文件夹下的工程 proj3,其中定义了 Septinary 类(七进制类),来表示一个

8、七进制的数及其相关操作。和十进制的数“逢十进一”类似,七进制的数定义为“逢七进一”。这里对 Septinary 类的数据成员做一下说明:char*data;存放七进制数的每一位数,data0为最高位。这里假设七进制的位数不超过 99 位。createSeptinary 函数由构造函数调用,用于将作为参数传入的十进制数转化为七进制数,并将七进制数的每一位存入 data 数组中。请编写 createSeptinary 函数使程序可以正确运行。注意:Septinary 类中提供了 numberToChar 成员函数,将一个0,6之间的数转化为对应的 ASCII 码值。在 main 函数中给出了一组测

9、试数据,此情况下程序的输出应该是:243 注意:只需在*333*666*之间填入所编写的若干语句,不要改动程序中的其他内容。#include“Septinaryh“Septinary:Septinary(intnum)this-data=newchar100;this-createSeptinary(num);Septinary:Septinary()if(data!=NULL)deletedata;voidSeptinary:createSeptinary(intnum)*333*666*charSeptinary:numberToChar(intnum)if(num0|num7)cout“

10、errornumber“end1;return0;return(char)(num+(char)0);voidSeptinary:show()coutdataend1;intmain()SeptinaryS(129);sshow();writeToFile(“c:test“);return0;proj3Septinaryh#includeioStream#includecmathusingnamespacestd;classSeptinary七进制类 private:char*data;public:Septinary(intnum);Septinary();voidcreateSeptina

11、ry(intnum);charnumberToChar(intnum);voidshow();voidwriteToFile(constchar*path);(分数:2.00)_正确答案:(正确答案:intindex=0; chartempi00; while(num) tempindex+=numberToChar (num7); num=7; dataindex=-0; inti=0; while(index) data-index=tempi+;)解析:解析:主要考查考生对对象成员数据处理的掌握。函数 createSeptinary 的功能,是将参数十进制整数 num 转化为七进制数,并将七进制数的每一位存入 data 数组中。由于转换得到的数是逆序的,这里需要临时数组 temp,用来暂时存放逆序的七进制数。首先 nnm 对 7 求余,通过成员函数 numberToChar 将余数转换为 char 类型,保存在 temp 中,num 除以 7 后重新赋值为除数,继续执行求余操作,直到 num 为0,此时七进制数已经逆序保存在 temp 中,最后将 temp 翻转保存到 data 中。由于在成员函数 show 中,可以直接将数组 data 当字符串输出,所以需要在 data 末尾添加0,来标识字符串结束。

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

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

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