ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:52.50KB ,
资源ID:1331833      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1331833.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】国家二级C++机试(操作题)模拟试卷335及答案解析.doc)为本站会员(dealItalian200)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】国家二级C++机试(操作题)模拟试卷335及答案解析.doc

1、国家二级 C+机试(操作题)模拟试卷 335及答案解析(总分:10.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.请使用 VG6或使用【答题】菜单打开考生文件夹 pmjl下的工程 proj1,其中有枚举 DOGCOLOR、狗类Dog和主函数 main的定义。程序中位于每个“ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: There is a white dog named Hoho There is a black dog named HaIla There is a motley dog named Hihi 注意:只修改每

2、个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostreamusing namespace std;狗的颜色:黑、白、黄、褐、花、其他 enum DOGCOLORBLACK,WHTTE,YELLOW,BROWN,PTEBALD,OTHER);class Dog /狗类 DOGCOLOR colot; char name2 O; static int count;public: Dog(char name,DOGCOLOR color) strcpy(this一name,name);ERROR*found* strcpy(this一color,color)

3、; DOGCOLOR getColor()constreturn color;)ERROR*found* COnSt char*get:Name()constreturn*name;) const char* getColorString()const switch(colot) CaSe BLACK:return”blaCk”; case WHITE:return”white”; CaSe YELLOW:return”yellow”; case BROWN:return”brown”; CaSe PIEBALD:return”piebald”; return”motley”; Void sh

4、ow()const cout”There is a”getColorString()”dog named”nameendl; ; int main() ERROR*found* Dog dog1(”Hobo”,WHITE),dog2(”Haha”,BLACK);dog3(”Hihi”,OTHER); dog1show(); dog2show(); dog3show(); return 0; (分数:2.00)_2.请使用 VC6或使用【答题】菜单打开考生文件夹 pmj1下的工程 pmj1,此工程中含有一个源程序文件pmj1cpp。其中位于每个注释“ERROR *found*”之后的一行语句存在

5、错误。请改正这些错误,使程序的输出结果为: The value is:10 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiostreamusing namespace std;class Member ERROR*found*private: Member(int val):value(val) int value; ,class MyClass Member m;public:ERROR*found* MyClass(int val) int GetValue()constreturn mvalue;);int mai

6、n() MyClass*obj=new MyClass(i0); ERROR*found* 下列语句输出 obj指向类中的 value值 cout”The value is:”objGetValue()endl; delete obj; return 0; (分数:2.00)_二、简单应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2,其中有整数栈类 IntList、顺序栈类 SeqList和链接栈类 LinkList的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 4 6 3

7、1 8 4 6 3 1 8 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#includeiostreamusing namespace std;class IntStack 整数栈类 public:virtual VOid push(int)=0;入栈virtual int pop()=0;出栈并返回出栈元素 virtual int topElement()const=0;返回栈顶元素。但不出栈 virtual bool isEmpty()oonst=0;判断是否栈空;class SeqStack:public IntStack int da

8、ta100; 存放栈元素的数组 int top; 栈顶元素的下标 public: *found* SeqStack():_()把 top初始化为一 1表示栈空 void push(int n)data+top=n;) *found* int pop()return_; int topElement()constreturn datatop; bool isEmpty()constreturn top=一 1;) ; struct Node int data; Node*next; ; class LinkStack:public IntStack Node*top;public:* found

9、*LinkStack():_)把 top初始化为NULL表示栈空 void push(int n) Node*P=new Node; P-data=n; * found* _; top=P; int pop() int d=top-data; top=top-next; return d; int topElement()constreturn top 一data;) bool isEmpty()constreturn top= NULL;) ,void pushData(IntStack pushData(stl);pop Data(stl); coutend1; LinkStack st2

10、;pushData(st2);pop Data(st2); coutend1; return 0;(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)4.请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中声明的 DataList类,是一个用于表示数据表的类。DataList 的重载运算符函数 operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是: 两个数据表: 1,2,3,4,5,6 3,4,5,6,7,8 两个数据

11、表之和: 4,6,8,10,12,14 要求: 补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件outdat 中。输出函数 writeToFile已经编译为 0bj文件,并且在本程序中调用。 /DataList,h #includeiostream using namespace std; class DataList数据表类 int fen; double*d;public: DataList(int len,double data=NULL); DataList(DataList return 0; (分数:2.00)_5.请使

12、用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 prog3,其中声明了 ValArray类,该类在内部维护一个动态分配的整型数组。ValArray 类的复制构造函数应实现对象的深层复制。请编写VMArray类的复制构造函数。在 main函数中给出了一组测试数据,此种情况下程序的输出应该是: ValArray v1=1,2,3,4,5 ValArray v2=2,2,2,2,2 要求: 补充编制的内容写在“*333*”与“*666*”之间。不要修改程序的其他部分。注意: 相关文件包括:maincpp、ValArrayh。 程序最后调用 writeToFile函数,使用另一组不同的

13、测试数据,将不同的运行结果输出到文件 outdat 中。输出函数 writeToFile已经编译为 obj文件。ValArrayh#includeiostreamusing namespace std;clas s ValArray int*v; int Size;public: ValArray(const int*P,int n):Size(n) v=new intsize; for(int i=0;iSize;i+) vi=Pi; ValArray(const ValArray for(int i=0;isize 一 1;i+) out vi ”,”; outvsize 一 1 ); ;

14、 void writeToFile(const char*); maincpp #include”ValArrayh” ValArray:ValArray(const ValArray v1print(cout); coutendl; cout”ValArray v2=”; v2print(cout); coutendl; writeToFile(”); return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 335答案解析(总分:10.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.请使用 VG6或使用【答题】菜单打开考生文件夹 pmjl下的工

15、程 proj1,其中有枚举 DOGCOLOR、狗类Dog和主函数 main的定义。程序中位于每个“ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: There is a white dog named Hoho There is a black dog named HaIla There is a motley dog named Hihi 注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostreamusing namespace std;狗的颜色:黑、白、黄、褐、花、其他 enum DOGCOLORBL

16、ACK,WHTTE,YELLOW,BROWN,PTEBALD,OTHER);class Dog /狗类 DOGCOLOR colot; char name2 O; static int count;public: Dog(char name,DOGCOLOR color) strcpy(this一name,name);ERROR*found* strcpy(this一color,color); DOGCOLOR getColor()constreturn color;)ERROR*found* COnSt char*get:Name()constreturn*name;) const char

17、* getColorString()const switch(colot) CaSe BLACK:return”blaCk”; case WHITE:return”white”; CaSe YELLOW:return”yellow”; case BROWN:return”brown”; CaSe PIEBALD:return”piebald”; return”motley”; Void show()const cout”There is a”getColorString()”dog named”nameendl; ; int main() ERROR*found* Dog dog1(”Hobo

18、”,WHITE),dog2(”Haha”,BLACK);dog3(”Hihi”,OTHER); dog1show(); dog2show(); dog3show(); return 0; (分数:2.00)_正确答案:(正确答案:(1)this-color=color; (2)const char getName()constreturn *name; (3)Dog dogl(”Hoho”,WHITE),dog2(”Haha”,BLACK),dg3(”Hihi”,OTHER);)解析:解析:(1)主要考查考生对 strcpy函数的掌握,如果看到上一条语句 strcpy(this一nallle,

19、name);,就以为本条语句也要用 strcpy函数来赋值,这是错误的。Strcpy 函数只能复制字符串,根据类的私有成员声明可知,color 是 DOGCOLOR型的,这里直接使用赋值语句“=”即可。 (2)主要考查考生对函数返回值的掌握,先解读语句 const char*getName()constreturn*name;,要返回的是一个 const的字符指针,同时函数内的值不能改变,name 在:类的私有成员声明中是个字符数组,*name代表字符数组而不是字符指针;问题就出来了,需要修改返回类型:constchar getName()constreturn*name;。 (3)语法错误,

20、定义变量时,变量之间应使用“,”分开。2.请使用 VC6或使用【答题】菜单打开考生文件夹 pmj1下的工程 pmj1,此工程中含有一个源程序文件pmj1cpp。其中位于每个注释“ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The value is:10 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiostreamusing namespace std;class Member ERROR*found*private: Member(int val):value(val) in

21、t value; ,class MyClass Member m;public:ERROR*found* MyClass(int val) int GetValue()constreturn mvalue;);int main() MyClass*obj=new MyClass(i0); ERROR*found* 下列语句输出 obj指向类中的 value值 cout”The value is:”objGetValue()endl; delete obj; return 0; (分数:2.00)_正确答案:(正确答案:(1)public: (2)MyClass(int val):_m(val)

22、或 MyClass(int val)_m=val (3)cout”The value is:”obj 一GetValue()endl;)解析:解析:(1)主要考查考生对私有成员和公有成员的掌握,先看改错语句的下一条语句:Member(int val):value(val),该语句是一个构造函数,因此我们可以得出此处为公有成员,因为构造函数不可能是私有成员。 (2)主要考查构造函数,构造函数要对类的成员进行初始化,因此在这里使用成员列表初始化,即 MyClass(int val):_m(val)或 MyClass(int val)_m=val。 (3)指针调用类的成员函数时,应使用标识符“一”。

23、二、简单应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2,其中有整数栈类 IntList、顺序栈类 SeqList和链接栈类 LinkList的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 4 6 3 1 8 4 6 3 1 8 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#includeiostreamusing namespace std;class IntStack 整数栈类 public:virtual VOid p

24、ush(int)=0;入栈virtual int pop()=0;出栈并返回出栈元素 virtual int topElement()const=0;返回栈顶元素。但不出栈 virtual bool isEmpty()oonst=0;判断是否栈空;class SeqStack:public IntStack int data100; 存放栈元素的数组 int top; 栈顶元素的下标 public: *found* SeqStack():_()把 top初始化为一 1表示栈空 void push(int n)data+top=n;) *found* int pop()return_; int

25、topElement()constreturn datatop; bool isEmpty()constreturn top=一 1;) ; struct Node int data; Node*next; ; class LinkStack:public IntStack Node*top;public:* found*LinkStack():_)把 top初始化为NULL表示栈空 void push(int n) Node*P=new Node; P-data=n; * found* _; top=P; int pop() int d=top-data; top=top-next; ret

26、urn d; int topElement()constreturn top 一data;) bool isEmpty()constreturn top= NULL;) ,void pushData(IntStack pushData(stl);pop Data(stl); coutend1; LinkStack st2;pushData(st2);pop Data(st2); coutend1; return 0;(分数:2.00)_正确答案:(正确答案:(1)top(一 1) (2)datatop- (3)top(NULL) (4)p-next=top)解析:解析:(1)主要考查考生对构造

27、函数的掌握情况,先看语句注释:把 top初始化为一 1表示栈空,即要把 top赋值为一 1即可。 (2)主要考查考生对纯虚函数的掌握情况,先看纯虚函数在基类的注释:出栈并返回出栈元素。要返回栈顶元素可以通过 datatop得到,出栈同时要使得 top往下移动,即 top-。 (3)主要考查考生对构造函数的掌握情况,先看语句注释:把 top初始化为 NULL表示栈空,因此使用成员列表初始化直接把 top赋值为 NULL即可。 (4)主要考查考生对栈的掌握,push 为入栈函数,top 指向栈顶元素,因此新添加的指针的 next要指向 top,即 p一next=top:。三、综合应用题(总题数:2

28、,分数:4.00)4.请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中声明的 DataList类,是一个用于表示数据表的类。DataList 的重载运算符函数 operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是: 两个数据表: 1,2,3,4,5,6 3,4,5,6,7,8 两个数据表之和: 4,6,8,10,12,14 要求: 补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。 注意:程序最后将

29、结果输出到文件outdat 中。输出函数 writeToFile已经编译为 0bj文件,并且在本程序中调用。 /DataList,h #includeiostream using namespace std; class DataList数据表类 int fen; double*d;public: DataList(int len,double data=NULL); DataList(DataList return 0; (分数:2.00)_正确答案:(正确答案:for(int i=0;i len; +i) 遍历对象 list中的数组和 d数组,把对应的值相加后放到数组 dd中。 ddi=d

30、i+listdi;)解析:解析:主要考查考生对重载运算符的掌握,题目要求对两个数据表求和。程序已经定义了动态数组dd,并已经分配好了空间,接下来只要运用循环语句完成元素相加并进行赋值即可。5.请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 prog3,其中声明了 ValArray类,该类在内部维护一个动态分配的整型数组。ValArray 类的复制构造函数应实现对象的深层复制。请编写VMArray类的复制构造函数。在 main函数中给出了一组测试数据,此种情况下程序的输出应该是: ValArray v1=1,2,3,4,5 ValArray v2=2,2,2,2,2 要求:

31、补充编制的内容写在“*333*”与“*666*”之间。不要修改程序的其他部分。注意: 相关文件包括:maincpp、ValArrayh。 程序最后调用 writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件 outdat 中。输出函数 writeToFile已经编译为 obj文件。ValArrayh#includeiostreamusing namespace std;clas s ValArray int*v; int Size;public: ValArray(const int*P,int n):Size(n) v=new intsize; for(int i=

32、0;iSize;i+) vi=Pi; ValArray(const ValArray for(int i=0;isize 一 1;i+) out vi ”,”; outvsize 一 1 ); ; void writeToFile(const char*); maincpp #include”ValArrayh” ValArray:ValArray(const ValArray v1print(cout); coutendl; cout”ValArray v2=”; v2print(cout); coutendl; writeToFile(”); return 0;(分数:2.00)_正确答案

33、:(正确答案:size=othersize; 把对象数组的大小赋值给 size V=Dew intothersize ; 根据对象数组的大小动态分配数组 v for(int i=0;isize;+i) vi=othervi; 遍历整个对象的数组把值 othervi放到数组 v中)解析:解析:主要考查考生对复制构造函数的掌握。由函数名:ValArray:ValArray(const。ValArray&other),知道要复制的对象是 other,对由 ValArray类的成员:int*v;int size;知道要复制的内容是动态数组 v及整型变量 size。动态数组要使用 new语句分配内存,最后利用 for循环语句来完成复制过程。

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