【计算机类职业资格】C++语言笔试-10及答案解析.doc
《【计算机类职业资格】C++语言笔试-10及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】C++语言笔试-10及答案解析.doc(9页珍藏版)》请在麦多课文档分享上搜索。
1、C+语言笔试-10 及答案解析(总分:100.00,做题时间:90 分钟)一、操作题(总题数:3,分数:100.00)1.请使用 VC6 或使用答题菜单打开考生文件夹 proj1 下的工程 proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“/ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Constructor called.The value is 10Copy constructor called.The value is 10Destructor called.Destructor called.注意:只修改注释“/ERR
2、OR *found*”的下一行语句,不要改动程序中的其他内容。/proj1.cpp#include iostreamusing namespace std;class MyClass public:/ERROR *found*MyClass(int i)value=i;cout“Construc-tor called.“endl;/ERROR *found*MyClass(const MyClass p)value=p.value;cout“Copy constructorcalled.“endl;void Print ()cout“The value is“valueendl;/ERROR
3、*found*void MyClass()cout“Destructor called.“endl;private:int value;int main()MyClass obj1;obj1.Print();MyClass obj2(obj1);obj2.Print();return 0;(分数:30.00)_2.请使用 VC6 或使用答题菜单打开考生文件夹 proj2 下的工程 proj2,其中有矩阵基类 MatrixBase、矩阵类 Matnx 和单位阵 UnitMatrix 的定义,还有 mam 函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
4、1 2 3 4 52 3 4 5 63 4 5 6 71 0 0 0 0 00 1 0 0 0 00 0 1 0 0 00 0 0 1 0 00 0 0 0 1 00 0 0 0 0 1注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。#includeiostreamusing namespace std;/矩阵基础类,一个抽象类class MatrixBaseint rows,cols;public:MatrixBase(int rows,int cols):rows(rows),cols(cols)int getRows()constretu
5、rn rows;/矩阵行数int gatCols()constreturn cols;/矩阵列数virtual double getElement(int r,int c)const=0;/取第 i 个元素的值void show() const/分行显示矩阵中所有元素for(int i=0;irows;i+)coutendl;for(int j=0;jcols;j+)/*found*COUt_“ “;/矩阵类class Matrix:public MatrixBasedouble*val;public:/*found*Matrix(int rows,int cols,double m=NuLL
6、):_/*found*val=_;for(int i=0;irows* cols;i+)vali=(m=NuLL?0.0:mi);Matrix()deleteval;double getElement(int r,int c)constreturn valr* getCols()+c;/单位阵(主对角线元素都是 1,其余元素都是 0 的方阵)类class UnitMatrix: public MatrixBasepublic:UnitMatrix(int rows):MatrixBase(rows,rows)/单位阵行数列数相同double getElement(int r,int c)con
7、st/*found*if(_)return 1.0;return 0.0;int main()MatrixBase*m;double d5=1,2,3,4,5,2,3,4,5,6,3,4,5,6,7;m=new Matrix(3,5,(double*)d);m-show();delete m;coutendl;m=new UnitMatrix(6);m-show();delete m;return 0;(分数:30.00)_3.请使用 VC6 或使用答题菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 DataList 类,是一个用于表示数据表的类。DataList 的重载运算
8、符函数 operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:两个数据表:1,2,3,4,5,63,4,5,6,7,8两个数据表之和:4,6,8,10,12,14要求:补充编制的内容写在“/*333*”与“/*666*”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件 out.dat 中。输出函数 writeToFile 已经编译为 obj 文件,并且在本程序中调用。/DataList.h#include iostreamusing namespac
9、e std;class Datalist /数据表类int len;double*d;public:DataList(int len,double data=DataList(Datalist int length () constreturn len;double getElement(int i)const return di;Datalist operator+(const DataList /两个数据表求和void show () const; /显示数据表 void writeToFile(char*,constDataList/main.cpp#include“Datalist.h
10、“DataList:DataList(int len,doubledata):len(len)d=new doublelen;for(int i=0;ilen;i+)di=(data=NULL?0.0:datai);DataList:Datalist(Datalist for(int i=0;ilen;i+)di=data.di;DataList DataList:operator+(constDatalist/*333*/*666*return DataList(list.length(),dd);void DataList:show()const(/显示数据表for(int i=0;ile
11、n-1;i+)coutdi“,“;coutdlen-1endl;int main()double s1=1,2,3,4,5,6;double s2=3,4,5,6,7,8;DataList list1(6,s1),list2(6,s2); /定义两个数据表对象cout“两个数据表:“endl;list1.show();list2.show();coutendl“两个数据表之和:“endl;(list1+list2).show();writeToFile(“ “,list1+list2);return 0;(分数:40.00)_C+语言笔试-10 答案解析(总分:100.00,做题时间:90 分
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 语言 笔试 10 答案 解析 DOC
