1、国家二级 C+机试(操作题)模拟试卷 43及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。可以在修改处增加或者删除一条语句。 本程序完成以下功能: (1)获得输入的两个数字 x1, x2(例如 x1=4, x2=2); (2)输出两个中较小的一个 (例如输出 2); (3)计算 x1 x2如果 x2等于 0,返回 -1(输出结果 2); (4)输出 x1+x2的结果 (输出结果 6): (5)输出 xl+1的结果 (输出结果 5); (6)输出 x2-1的结果 (输出结果 1)。 注意:不
2、要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 1 #include 2 void msin() 3 4 int xl ; 5 int x2 ; 6 int x3; 7 coutxlx2 ; 9 *error* 10 x3=(xlx2)?x1: x2; 11 cout 2 class CRect 3 4 private: 5 *1* 6 7 public: 8 *2* 9 10 *3* 11 12 void SetPointS(double, double, double, double); 13 void SetLeftPoint(doubl
3、e m) leftPoint=m; ) 14 void SetRightPoint(double m) rightPoint=m; ) 15 void SetToppoint(double m) topPoint=mj) 16 void SetBottomPoint (double m)bottomPoint=m; ) 17 void Display(); 18 ; 19 20 CRect: CRect(double l, doublet, double r, double b) 21 22 leftPoint=1 ; topPoint=t; 23 rightPoint=r ; bottomp
4、oint=b ; 24 25 void CRect: SetPoints(double 1, double t, double r, double b) 26 27 leftPoint=1 ; topPoint=t ; 28 rightPoint=r; bottomPoint =b ; 29 30 void CRect: Display() 31 32 cout(x2)?x1: x2; ”语句是判断 x1与 x2其中哪个相对较小,并将其赋值给 x3。条件运算符的格式:表达式 1?表达式 2:表达式 3。执行顺序是先求解表达式 1,若非则求解表达式 3,此时表达式 3的值就作为整个条件表达式值。
5、所以求 x1和 x2中较小的一个,如果 x1x2为真,那么 x1的值赋给x3,否则 x2的值赋给 x3, 即第 1个标识下为 “x3=(x1x2)?x1: x2; ”。 (2)同理,第 2个标识下计算 x1 x2如果 x2等于 0,返回 1。即 “x3=(x2)?xlx2: -1; ”。 (3)题干中求 x1+l,而 -x1是 x11,所以改为 x1+。同理 x2+改为 x2-。即“x3=(x1+)+(x2-); ”。 二、综合应用题 2 【正确答案】 (1)添加语句: double leftPoint, topPoint, rightpoint, bottompoint ; (2)添加语句:
6、 CRect(double leftPoint=0, double topPoint=0, double righ七point=0, double bottomPoint=0); (3)添加语句: CRect()f); (4)添加语句: CRect rect2(rectl); 【试题解析】 程序中定义了一个表示矩形的类 CRect,该类中定义了私有数据成员 leflPoint、 topPoint、 rightPoint、 bottomPoint,分别用于表示矩形左上角及右下角的点的坐标且它们的数据类型都是 double型,类 CRect有多个成员函数,SetPoints0, SetLeftPo
7、int()函数可改变成员变量 leflPoint的值,而 SetRightPoint()成员函数可改变 rightPoint的值, SetTopPoint()可改变 topPoint的值,SetBottomPoint()改变 bottomPoint的值, Display()成员函数显示成员变量的值。 解题思路 (1)第 1个标识下完成私有数据成员 leflPoint、 topPoint、 rightPoint、bottomPoint的定义,均为 double型的变量,故第 1个标识下应添加 “double leftPoint, topPoint, rightPoint, bottomPoint
8、; ”。 (2)构造函数完成成员变量的初始化,类 CRect的默认构造函数并初始化 double型私有数据成员 leflPoint、 topPoint、 rightPoint、 bottomPoint为 0,故第 2个标识下应添加 “CRect(double leftPoint=0, double topPoint=0, double rightPoint=0,double bottomPoint=0); ”。 (3)析构函数名和类名一致,并在前面加 “ ”以和构造函数区别,该析构函数体为空,故第 3个标识下应添加 “ CRect0; ”,虽然该函数体为空,但是 “”必须保留。 (4)主函数中类 CRect的对象 rect2是通过复制构造函数将 rectl的值赋值给它实现初始化的,而 rectl的初始化直接调用自定义构造函数,第 4个标识下应添加“CReclrect2(rectl); ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1