1、国家二级 C+机试(操作题)模拟试卷 288及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为: Constructor,i=0, Destnlctor 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CObj int i;public: CObj(); void display(); CObj();*error*CObj:CObj() cout“ConstruCtor“
2、,“; i=0;*error*CObj:display() cout“i=“i“,“endl;*error*CObj:CObj() cout“Destructor“endl;Void main() CObj a; adisplay();(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请补充完整程序 fun(int i),使程序完成以下功能: 如果 i=5,则输出如下 5行井号。 # # # # # 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include Void fun(int
3、i) int main() fun(5); return 0; (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,通过把类 Distance定义为类 Point的友元类,来实现计算两点之间距离的功能。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)把类 CDistance定义为类 CPoint的友元类。请在注释*1*之后添加适当的语句。 (2)定义类 CPoint的构造函数,完成给私有数据成员 x和 y的赋值,并且两个参数的缺省值都为 0。请在注释*2*之后添加适当的语句。 (3)完成类 CDi
4、stance的成员函数length(PointpPoint,PointqPoint)的定义,并在其中计算点 p、q 之间的距离,并且返回结果。假设两点之间的距离 distance=sqrt(pPointx-qPointx)*(pPointx-qPointx)+(pPointy-qPointy)*(pPointy-qPointy)。请在注释*3*之后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostream#includecmathusing namespace std;class CPointpublic: *1* 定义类
5、 Point的构造函数 *2* void display() cout“x=“xendl;cout“y=“yendl;)private: float x,y;Class CDistancepublic: float length(CPointp,CPoint q);float CDistance:length(CPointpPoint,CPointqPoint) *3* int main() CPoint mPoint(10,10),nPoint(40,50); mPointdisplay(); nPointdisplay(); CDistance len; coutlenlength(mPo
6、int,nPoint)endl; return 0; (分数:2.00)_国家二级 C+机试(操作题)模拟试卷 288答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为: Constructor,i=0, Destnlctor 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CObj int i;public: CObj(); void display(); CObj();
7、*error*CObj:CObj() cout“ConstruCtor“,“; i=0;*error*CObj:display() cout“i=“i“,“endl;*error*CObj:CObj() cout“Destructor“endl;Void main() CObj a; adisplay();(分数:2.00)_正确答案:(正确答案:(1)CObj:CObj() (2)void CObj:display() (3)CObl:CObl()解析:解析:(1)在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符(:),作用域运算符用来表示某个成员属于哪个类,使用格式为:类
8、名:成员函数(参数函数),因此第 1个标识下应改为 CObj:CObj(),默认构造函数没有参数。 (2)第 2个标识下“CObj:display()”,从其后的语句看,这是在类外实现 CObj函数,因此也有作用域运算符使用错误问题,display()函数返回值为 void,因此第 2个标识下应改为 void CObj:display()。 (3)第 3个标识下“CObj:CObj()”,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名字和类名相同,并在前面加“”字符,用来与构造函数加以区别,因此第 3个标识下应改为 CObj:CObj()。二、简单应用题(总题数:1,分数:2.
9、00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请补充完整程序 fun(int i),使程序完成以下功能: 如果 i=5,则输出如下 5行井号。 # # # # # 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include Void fun(int i) int main() fun(5); return 0; (分数:2.00)_正确答案:(正确答案:for(int j=0;ji;j+) 行循环 for(int k=0;k=j;k+) 列循环 cout“#“; 输出“#” coutendl ; )解析:解析:(1)首先,利用 for循环
10、进行外层循环,要输出的 i行。 (2)然后,利用 for循环进行内层循环,输出对应 i行的 i列。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,通过把类 Distance定义为类 Point的友元类,来实现计算两点之间距离的功能。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)把类 CDistance定义为类 CPoint的友元类。请在注释*1*之后添加适当的语句。 (2)定义类 CPoint的构造函数,完成给私有数据成员 x和 y的赋值,并且两个参数的缺省值都为 0。请在注释*2*之后添加适当的语句。 (3)
11、完成类 CDistance的成员函数length(PointpPoint,PointqPoint)的定义,并在其中计算点 p、q 之间的距离,并且返回结果。假设两点之间的距离 distance=sqrt(pPointx-qPointx)*(pPointx-qPointx)+(pPointy-qPointy)*(pPointy-qPointy)。请在注释*3*之后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostream#includecmathusing namespace std;class CPointpublic:
12、*1* 定义类 Point的构造函数 *2* void display() cout“x=“xendl;cout“y=“yendl;)private: float x,y;Class CDistancepublic: float length(CPointp,CPoint q);float CDistance:length(CPointpPoint,CPointqPoint) *3* int main() CPoint mPoint(10,10),nPoint(40,50); mPointdisplay(); nPointdisplay(); CDistance len; coutlenlen
13、gth(mPoint,nPoint)endl; return 0; (分数:2.00)_正确答案:(正确答案:(1)添加语句:friend class CDistance; (2)添加语句:CPoint(float a=0,float b=0)x=a;y=b; (3)添加语句:return sqrt(pPointx-qPointx)*(pPointx-qPointx)+(pPointy-qPointy)*(pPointy-qPointy);)解析:解析:(1)第 1个标识下补充定义类 CDistance为类 CPoint的友元类,声明友元类的格式为:friend类名;,故第 1个标识下应添加“
14、friend class CDistance;”。 (2)类 CPoint的构造函数完成给私有数据成员 x和 Y的初始化,两个参数的缺省值都为 0,因此参数含有默认值 0,故第 2个标识下应添加“CPoint(float a=0,float b=0)x=a;y=b;”。 (3)类 CDistance的成员函数length(CPoint pPoint,CPointqPoint)返回点 p、q 之间的距离,可由公式distance=sqrt(pPointx-qPointx)*(pPointx-qPointx)+(pPointy-qPointy)*(pPointy-qPointy)计算求得,第 3个标识下应添加“return sqrt(pPointXqPointx)* (pPointx-qPointx)+(pPointy-qPointy)*(pPointy-qPointy);”。