1、国家二级 C+机试(操作题)模拟试卷 375及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错误,请改正错误,使得程序正常运行。并使程序输出结果为: ABCDEF ABCDEF ABCDEF 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。 #include void main() *error* char s 1=”ABC “DEF”; *error* char s2=”ABC DEF”; *error* char
2、S3=“ABC”+“DEF”; CoutS1S2S3_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请完成以下函数: int factorial(int n):求出 n的阶乘,必须使用递归调用。 如果 n小于 1则返回 0。 注意:不能修改函数的其他部分。 #include #include int factorial(int n) void main() coutfactorial(1)factorial(5)factorial(0)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 mod
3、i3cpp,其中定义了用于表示矩形的 CRect类,但类CRect的定义并不完整。请按要求完成下列操作,将类 CRect的定义补充完成。 (1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是 double型的数据。请在注释*1*之后添加适当的语句。 (2)完成默认构造函数CRect的定义,指定缺省实参为 0,都是 double型的数据。请在注释*2*之后添加适当的语句。 (3)定义函数体为空的析构函数。请在注释*3*之后添加适当的语句。 (4)在main()函数中定义 CRect类的实例 r
4、ect2,并把 rect1 的值赋给 rect2。 请在注释*4*之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include Class CRect private: *1* public: *2* *3* void SetPoints(double, double,double,double); void SetLeftPoint(double m)leftPoint=m;) void SetRightP0int(double m) rightPoint=m;) void SetTopPoint(double m)topPoint=m;) void
5、SetBottomPoint(double m)bottomPoint=m;) void Di splay(); ; CRect:CRect(double 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:misplay() cout1ef
6、tPoint“,”topPoint“)”rightPoint”,”)_国家二级 C+机试(操作题)模拟试卷 375答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错误,请改正错误,使得程序正常运行。并使程序输出结果为: ABCDEF ABCDEF ABCDEF 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。 #include void main() *error* char s 1=”ABC “DEF”; *error
7、* char s2=”ABC DEF”; *error* char S3=“ABC”+“DEF”; CoutS1S2S3_正确答案:(正确答案:(1)char s 1=“ABC” (2)char s2=“ABC (3)char s3=“ABC”)解析:解析:程序要求输出字符串数组的值。从己定源程序的 main主函数开始入手,可以看出程序通过输出函数 cout实现三个字符串数组值的输出。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请完成以下函数: int factorial(int n):求出 n的阶乘,必须使用递归调用。 如果 n
8、小于 1则返回 0。 注意:不能修改函数的其他部分。 #include #include int factorial(int n) void main() coutfactorial(1)factorial(5)factorial(0)_正确答案:(正确答案:if(n解析:解析:factorial(int n)求出 n的阶乘,要求使用递归调用。递归调用是指在调用一个函数的过程中直接或间接地调用该函数本身,n 的阶乘计算公式为:n!=n(n-1)(n-2)2x1,即 n!=n(n-1)!,因此 factorial(intn)的递归过程为:return n*factorial(n-1)。三、综合应
9、用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示矩形的 CRect类,但类CRect的定义并不完整。请按要求完成下列操作,将类 CRect的定义补充完成。 (1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是 double型的数据。请在注释*1*之后添加适当的语句。 (2)完成默认构造函数CRect的定义,指定缺省实参为 0,都是 double型的数据。请在注释*2*之后添加适当的语句。 (3)定义函数体为空的析构函数。请在
10、注释*3*之后添加适当的语句。 (4)在main()函数中定义 CRect类的实例 rect2,并把 rect1 的值赋给 rect2。 请在注释*4*之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include Class CRect private: *1* public: *2* *3* void SetPoints(double, double,double,double); void SetLeftPoint(double m)leftPoint=m;) void SetRightP0int(double m) rightPoint=m;) v
11、oid SetTopPoint(double m)topPoint=m;) void SetBottomPoint(double m)bottomPoint=m;) void Di splay(); ; CRect:CRect(double 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;b
12、ottomPoint =b; void CRect:misplay() cout1eftPoint“,”topPoint“)”rightPoint”,”)_正确答案:(正确答案:(1)添加语句:double leftPoint,topPoint,rightPoint,bottomPoint; (2)添加语句:CRect(double leftPoint=0,double topPoint=0,double rightPoint=0,double bottomPoint=0); (3)添加语句:CRect(); (4)添加语句:CRect rect2(rectl);)解析:解析:程序中定义了一个表示矩形的类 CRect,该类中定义了私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标且它们的数据类型都是 double型,类 CRect有多个成员函数,SetPoints(),SetLefiPoint0 函数可改变成员变量 leftPoint的值,而 SetRightPoint()成员函数可改变 rightPoint的值,SetTopPoint0 可改变topPoint的值,SetBottomPoint()改变 bottomPoint的值,Display()成员函数显示成员变量的值。