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

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

1、二级 C+机试-130 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.请使用“答题“菜单或使用 VC6 打开考生文件夹 proj1 下的工程 proj1,该工程含有一个源程序文件proj1.cpp。程序中位于每个/ERROR*found*下的语句行有错误。请改正这些错误,改正后程序的输出应该是:1 2 3 4 5 6 7 8 9 10注意:只修改注释/ERROR*found*下的一行语句,不要改动程序中的其他内容。/源程序 proj1.cpp#includeiostreamusing namespace std;class MyCla

2、sspublic:MyClass(int len)array=new intlen;arraySize=len;for(int i=0;iarraySize; i+) arrayi=i+l;MyClass()/ERROR*found*delete array;void Print() constfor(int i=0;iarraySize; i+)/ERROR*found*cinarrayi“;coutendl;prlvate:int*array;int arraySize;int main()/ERROR*found*MyClass obj;obj.Print();return 0:(分数:

3、30.00)_二、2简单应用题(总题数:1,分数:40.00)2.请使用“答题”菜单或使用 VC6 打开考生文件夹 proj2 下的工程 proj2。其中有向量基类 VectorBase、向量类 Vector 和零向量类 ZeroVector 的定义。请在程序中的画线处填写适当代码,然后删除横线,以实现上述定义。此程序的正确输出结果应为:(1,2,3,4,5)(0,0,0,0,0,0)注意:只能在画线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动/*found*。/源程序#includeiostreamusing namespace std;class VectorBase /向

4、量基类,一个抽象类int len,public:VectorBase(int len): len(len)int length() const return len; /向量长度,即向量中元素的个数virtual double getElement(int i) const=0; /取第 i 个元素的值virtual double sum() const_0; /求所有元素的和void show() const /显示向量中所有元素cout“(“;for(int i=0;ilength()-1;i+) coutgetElement(i)“,“;/*found*cout_“)“endl; /显示

5、最后一个元素;class Vector: public VectorBase/向量类double*val,public:Vector(int len, double v=NULL): VectorBase(len)val=new doublelen;for(int i=0; ilen, i+) vali=(v=NULL?0.0:vi);/*found*Vector()_;double getElement(int index) const return valindex; double sum() constdouble s=0.0:/*found*for(int i=0; ilength()

6、;i+)_;return s:;class ZeroVector: public VectorBase/零向量类public:ZeroVector(int len): VectorBase(len)/*found*double getElement(int index) const_;double sum()const return 0.0,;int main()VectorBase*v:double d=1,2,3,4,5;v=new Vector(5,d);v-show();delete v:v=new ZeroVector(6);v-show();delete v:return 0:(分

7、数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.请使用“答题”菜单或使用 VC6 打开考生文件夹 proj3 下的工程 proj3,其中声明了 SorteList 类。这是一个用于表示有序数据表的类,其成员函数 insert 的功能是将一个数据插入到有序表中,使得该数据表仍保持有序。请编写 lnsert 函数。程序的正确输出应该是:1,2,4,5,7,8,10插入 6 和 3 后:1,2,3,4,5,6,7,8,10要求:补充编制的内容写在/*333*与/料料料料 666*两行之间,不得修改程序的其他部分。注意:程序最后已经将结果输出到文件 out.dat 中。输出函数

8、writeToFile 已经编译为 obj 文件,并且在本程序中调用。/源程序#include“SortedList.h“SortedList: SortedList(int len, double data):len(len)d=new doublelen+2;for(int k=0; klen; k+) dk=(data=NULL?0.0:datak);for(int i=0; ilen-l,i+)int m=i;for(int j=i; jlen; j+)if(djdm) m=j;if(mi)double t=dm;dm=di;di=t;void SortedList:insert(do

9、uble data)/*333*/*666*void SortedList: show () const /显示有序数据表for(int i=0; ilen-1,i+) coutdi“,“;coutdlen-1endl;int main() double s=5,8,1,2,10,4,7;SortedList list(7,s);cout“插入前:“endl;list.show();list.insert (6.0);list.insert(3.0);cout“插入 6 和 3 后:“endl;list.show();/ writeToFile (“K: / b10 /61000101 / “

10、,list) ;return 0,(分数:30.00)_二级 C+机试-130 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.请使用“答题“菜单或使用 VC6 打开考生文件夹 proj1 下的工程 proj1,该工程含有一个源程序文件proj1.cpp。程序中位于每个/ERROR*found*下的语句行有错误。请改正这些错误,改正后程序的输出应该是:1 2 3 4 5 6 7 8 9 10注意:只修改注释/ERROR*found*下的一行语句,不要改动程序中的其他内容。/源程序 proj1.cpp#includeiostreamusin

11、g namespace std;class MyClasspublic:MyClass(int len)array=new intlen;arraySize=len;for(int i=0;iarraySize; i+) arrayi=i+l;MyClass()/ERROR*found*delete array;void Print() constfor(int i=0;iarraySize; i+)/ERROR*found*cinarrayi“;coutendl;prlvate:int*array;int arraySize;int main()/ERROR*found*MyClass ob

12、j;obj.Print();return 0:(分数:30.00)_正确答案:(1)delete array;2)coutarrayi“;3)MyClass obj(10);)解析:1)释放数组,后面不加,只需要数组名即可。2)打印 1 2 3 4 5 6 7 8 9 10,应该用 cout 对象,而不是 cin。后面的插入运算符也暗示了答案。3)按照题目的要求,要打印 110,所以应该是创建一个有 10 个数的数组对象,所以在创建 obj 时,应该带上参数 10。二、2简单应用题(总题数:1,分数:40.00)2.请使用“答题”菜单或使用 VC6 打开考生文件夹 proj2 下的工程 pro

13、j2。其中有向量基类 VectorBase、向量类 Vector 和零向量类 ZeroVector 的定义。请在程序中的画线处填写适当代码,然后删除横线,以实现上述定义。此程序的正确输出结果应为:(1,2,3,4,5)(0,0,0,0,0,0)注意:只能在画线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动/*found*。/源程序#includeiostreamusing namespace std;class VectorBase /向量基类,一个抽象类int len,public:VectorBase(int len): len(len)int length() const

14、return len; /向量长度,即向量中元素的个数virtual double getElement(int i) const=0; /取第 i 个元素的值virtual double sum() const_0; /求所有元素的和void show() const /显示向量中所有元素cout“(“;for(int i=0;ilength()-1;i+) coutgetElement(i)“,“;/*found*cout_“)“endl; /显示最后一个元素;class Vector: public VectorBase/向量类double*val,public:Vector(int l

15、en, double v=NULL): VectorBase(len)val=new doublelen;for(int i=0; ilen, i+) vali=(v=NULL?0.0:vi);/*found*Vector()_;double getElement(int index) const return valindex; double sum() constdouble s=0.0:/*found*for(int i=0; ilength();i+)_;return s:;class ZeroVector: public VectorBase/零向量类public:ZeroVecto

16、r(int len): VectorBase(len)/*found*double getElement(int index) const_;double sum()const return 0.0,;int main()VectorBase*v:double d=1,2,3,4,5;v=new Vector(5,d);v-show();delete v:v=new ZeroVector(6);v-show();delete v:return 0:(分数:40.00)_正确答案:(1)coutgetElement(len-l)“)“endl;2)Vector()delete val;3)for

17、(int i=0;ilength();i+)s=s+vali;4)double getElement(int index) const return 0.0;)解析:1)向量的最后一个元素长度应该是 len-1,还需要打印“)“和换行。2)析构函数用于释放数组,故此处填写 delete val,注意 val 后面不再需要跟。3)求和函数对向量求和,将向量中的每个元素累加赋值给 s,所以应该是 s=s+vali。4)对零向量取元素,因为零向量每个元素都为 0,所以直接返回值为 0.0 即可。三、3综合应用题(总题数:1,分数:30.00)3.请使用“答题”菜单或使用 VC6 打开考生文件夹 pr

18、oj3 下的工程 proj3,其中声明了 SorteList 类。这是一个用于表示有序数据表的类,其成员函数 insert 的功能是将一个数据插入到有序表中,使得该数据表仍保持有序。请编写 lnsert 函数。程序的正确输出应该是:1,2,4,5,7,8,10插入 6 和 3 后:1,2,3,4,5,6,7,8,10要求:补充编制的内容写在/*333*与/料料料料 666*两行之间,不得修改程序的其他部分。注意:程序最后已经将结果输出到文件 out.dat 中。输出函数 writeToFile 已经编译为 obj 文件,并且在本程序中调用。/源程序#include“SortedList.h“S

19、ortedList: SortedList(int len, double data):len(len)d=new doublelen+2;for(int k=0; klen; k+) dk=(data=NULL?0.0:datak);for(int i=0; ilen-l,i+)int m=i;for(int j=i; jlen; j+)if(djdm) m=j;if(mi)double t=dm;dm=di;di=t;void SortedList:insert(double data)/*333*/*666*void SortedList: show () const /显示有序数据表f

20、or(int i=0; ilen-1,i+) coutdi“,“;coutdlen-1endl;int main() double s=5,8,1,2,10,4,7;SortedList list(7,s);cout“插入前:“endl;list.show();list.insert (6.0);list.insert(3.0);cout“插入 6 和 3 后:“endl;list.show();/ writeToFile (“K: / b10 /61000101 / “,list) ;return 0,(分数:30.00)_正确答案:(/*333*int n=len:dn=data;for(int i=n-1;i=0;i-)if(dataelse di+1=data;break:len+:/*666*)解析:解析 在排序中,首先对假定前 n 个元素已经有序,采用插入排序法进行排序,如果 datadi就将 di后移,否则就将 data 插入到/+1 的位置上。注:在 SortedList:SortedList(int len,double data):len(len)中,须将 d=new doublelen+1;改为 d=new doublelen+2;,否则会提示“内存申请过”小错误。

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

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

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