1、国家二级 C+机试(操作题)-试卷 71 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: Max is 7 提示:max()函数实现找出两个数中的最大值,并作为函数值返回。 注意:错误的语句在*error*的下面,修改该语句即可。 #include using namespace std; *error* int max(int a,int b) if(am_二、简单应用题(总题数:1,分数:2.00)2.使
2、用 VC6 打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码。函数sort(int sort(x,y,z); coutx,yZ_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示矩形的 CRect 类,但类CRect 的定义并不完整。请按要求完成下列操作,将类 CRect 的定义补充完成。 (1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是 double 型的数据。请在注释*1*之后添加适当
3、的语句。 (2)完成默认构造函数CRect 的定义,指定缺省实参为 0,都是 double 型的数据。请在注释*2*之后添加适当的语句。 (3)定义函数体为空的析构函数。请在注释*3*之后添加适当的语句。 (4)在main()函数中定义 CRect 类的实例 reet2,并把 rectl 的值赋给 rect2。请在注释*4*之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include Class CRect private: *1* public: *2* *3* void SetPoints(double, double,double,double);
4、void SetLeftPoint(double m) (1eftPoint=m;) void SetRightPoint(double m) rightPoint=m;) void SetToppoint(double m) topPoint=m;) void SetBottomPoint (double m)bottomPoint=m;) void Display(); ); CRect:CRect(double 1,double t,double r,double b) leftPoint=1;topPoint=t ; rightPoint=r;bottomPoint =b ; void
5、 CRect:SetPointS(double 1,double t,double r,double b) leftPoint=1 ; topPoint=t; rightPoint=r;bottompoint =b ; void CRect:Di splay() cout(leftPoint”,“topPoint ”)”rightpoint”,”“)”_国家二级 C+机试(操作题)-试卷 71 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正
6、常运行,并使程序输出的结果为: Max is 7 提示:max()函数实现找出两个数中的最大值,并作为函数值返回。 注意:错误的语句在*error*的下面,修改该语句即可。 #include using namespace std; *error* int max(int a,int b) if(am_正确答案:(正确答案: (1)intmax(int sort(x,y,z); coutx,yZ_正确答案:(正确答案:Int t ; if(mn) t=m;m=n ; n=t ;*交换 x,y 的值* if(m1) t=m; m=1 ; 1=t;*交换 x,z 的值*if(n1) t=n ; n
7、=1;1=t;*交换 z,y 的值*)解析:解析:(1)由审题分析可知,三次比较便可将 m、n、1 排序。 (2)在实现时,先将 m 与 n 进行比较,如果 mn 则将 m 与 n 的值进行交换,然后再用 m 与 1 进行比较,如果 m1 则将 m 与 1 的值进行交换,这样能使 m 最大。然后再将 n 与 1 进行比较,若 n三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示矩形的 CRect 类,但类CRect 的定义并不完整。请按要求完成下列操作,将类 CRect 的定义补充完成。 (1)定义私有数据成员lef
8、tPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是 double 型的数据。请在注释*1*之后添加适当的语句。 (2)完成默认构造函数CRect 的定义,指定缺省实参为 0,都是 double 型的数据。请在注释*2*之后添加适当的语句。 (3)定义函数体为空的析构函数。请在注释*3*之后添加适当的语句。 (4)在main()函数中定义 CRect 类的实例 reet2,并把 rectl 的值赋给 rect2。请在注释*4*之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#inclu
9、de Class CRect private: *1* public: *2* *3* void SetPoints(double, double,double,double); void SetLeftPoint(double m) (1eftPoint=m;) void SetRightPoint(double m) rightPoint=m;) void SetToppoint(double m) topPoint=m;) void SetBottomPoint (double m)bottomPoint=m;) void Display(); ); CRect:CRect(double
10、 1,double t,double r,double b) leftPoint=1;topPoint=t ; rightPoint=r;bottomPoint =b ; void CRect:SetPointS(double 1,double t,double r,double b) leftPoint=1 ; topPoint=t; rightPoint=r;bottompoint =b ; void CRect:Di splay() cout(leftPoint”,“topPoint ”)”rightpoint”,”“)”_正确答案:(正确答案:(1)添加语句:double leftPo
11、int,topPoint,rightPoint,bottomPoint; (2)添加语句:CRect(double leftPoint=0,double topPoint=0,double rightPoint=0,double bottomPoint=0); (3)添加语句:CRect() (4)添加语句:CRect rect2(rectl)解析:解析:(1)第 1 个标识下完成私有数据成员 leflPoint、topPoint、rightPoint、bottomPoint 的定义,均为 double 型的变量,故第 1 个标识下应添加“double leflPoint,topPoint,r
12、ightPoint,bottomPoint;”。 (2)构造函数完成成员变量的初始化,类 CRect的默认构造函数并初始化 double 型私有数据成员 leflPoint、topPoint、rightPoint、bottomPoint 为0,故第 2 个标识下应添加“CRect(double leftPoint=0,double topPoint=0,doublerightPoint=0,double bottomPoint=0);”。 (3)析构函数名和类名一致,并在前面加“”以和构造函数区别,该析构函数体为空,故第 3 个标识下应添加“CRect0;”,虽然该函数体为空,但是“”必须保留。 (4)主函数中类 CRect 的对象 rect2 是通过复制构造函数将 rectl 的值赋值给它实现初始化的,而 rect1 的初始化直接调用自定义构造函数,第 4 个标识下应添加“CRectrect2(reet 1);”。