1、国家二级 C+机试(操作题)模拟试卷 323及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: Hello 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhvoid main() *error* typedef BOOL bool; *error* BOOL a=FALSE; int i=0X80000000; *error*
2、 a=!i; if(a) cout“Hello“endl; return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 sum(int n)计算在 n范围内,能被 7和 11整除的所有整数的和(包括 n在内)。 注意:不能修改程序的其他部分,只能补充 sum()函数。 #include double sum(int n) void main() coutsum(80)sum(200)sum(300)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生
3、文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 其中:定义了类 circle和 column,column 类由 circle类 protected派生,但是两个类的定义并不完整,请按照以下的要求,将程序补充完整。 (1)定义类 circle的保护数据成员函数r和 area,它们都是 double型的数据,请在注释*1*后完成。 (2)添加类 circle的无参数的构造函数,使得类 circle对象的 r默认值为 0,请在注释*2*后完成。 (3)添加派生类 column的构造函数的定义,使得参数为 double型的 height和 ra
4、dius并将其分别赋给数据成员 h和基类的 r请在注释*3*之后完成。 (4)完成派生类 column的成员函数 print()的定义,请在注释*4*之后完成,使得输出为: radius=5 area=7854 height=10 vol=7854 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhconst double pi=31416;Class circleprotected: *1*public: *2* r=00; circle(double radius) r=radius; Void print() area=r*
5、r*pi; cout“radius=“r“area=“areaendl; ; class column:protected circle protected: double h;public: *3* h=height; r=radius; Void print() Circle:print(); *4* ;int main() column col(50,100);colprint(); return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 323答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下
6、的源程序文件 modi1cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: Hello 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhvoid main() *error* typedef BOOL bool; *error* BOOL a=FALSE; int i=0X80000000; *error* a=!i; if(a) cout“Hello“endl; return;(分数:2.00)_正确答案:(正确答案:(1)typedef bool BOOL; (2)BO
7、OL a=false; (3)a=(i!=0);)解析:解析:(1)第 1个标识下的“typedef BOOL bool;”。typedef 为 C语言的关键字,作用是为一种数据类型定义一个新名字。一般形式应该是:typedef 标准数据类型新的数据类型名,所以第 1个标识下应该是“typedefbool BOOL:”。 (2)C+中逻辑假的值应该是 false而不是 FALSE,所以这里修改为“BOOLa=false;”。 (3)题目要求输出 Hello,它要在“if(a)”为真的时候输出“Hello”。i 的值为0X80000000,第 3个标识下 a=!i;语句中 a的值为假。i!=0
8、为真,所以修改为“a=(i!=0);”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 sum(int n)计算在 n范围内,能被 7和 11整除的所有整数的和(包括 n在内)。 注意:不能修改程序的其他部分,只能补充 sum()函数。 #include double sum(int n) void main() coutsum(80)sum(200)sum(300)_正确答案:(正确答案:int result=0; for(int i=11;i=n;i+) if(i7=0)(i11=0)
9、 result+=i; return result;)解析:解析:(1)利用循环查找能所有小于等于 n的能被 7和 11整除的数,循环变量 i从最小值 11开始,到 n结束,即 11=i=n。 (2)在函数中定义累加变量 result用来保存求和结果,在循环体内,逐个判断每个 i是否能被 7和 11整除,即(i7=0)和(i11=0)都满足的话,说明 i能同时被 7和 11整除,将该值加到 result上,循环结束返回 result。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补
10、充完整。 其中:定义了类 circle和 column,column 类由 circle类 protected派生,但是两个类的定义并不完整,请按照以下的要求,将程序补充完整。 (1)定义类 circle的保护数据成员函数r和 area,它们都是 double型的数据,请在注释*1*后完成。 (2)添加类 circle的无参数的构造函数,使得类 circle对象的 r默认值为 0,请在注释*2*后完成。 (3)添加派生类 column的构造函数的定义,使得参数为 double型的 height和 radius并将其分别赋给数据成员 h和基类的 r请在注释*3*之后完成。 (4)完成派生类 co
11、lumn的成员函数 print()的定义,请在注释*4*之后完成,使得输出为: radius=5 area=7854 height=10 vol=7854 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhconst double pi=31416;Class circleprotected: *1*public: *2* r=00; circle(double radius) r=radius; Void print() area=r*r*pi; cout“radius=“r“area=“areaendl; ; class co
12、lumn:protected circle protected: double h;public: *3* h=height; r=radius; Void print() Circle:print(); *4* ;int main() column col(50,100);colprint(); return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:double r,area; (2)添加语句:circle() (3)添加语句:column(double radius,double height) (4)添加语句:coutarea*hendl;)解析:解析:(1)题目
13、1要求“定义类 circle的保护数据成员函数 r和 area,它们都是 double型的数据”。保护成员与 private和 public一样是用来声明成员的访问权限的。在已有程序 circle类中的protected:区域,添加变量 r和 area的定义,即“double r,area;”。 (2)题目 2要求“添加类circle的无参数的构造函数,使得类 circle对象的 r默认值为 0”。在 C+中,构造函数是一种特殊的成员函数,它的名字与类同名,没有参数的构造函数一般形式为:构造函数名(),所以这里添加“circle()”。 (3)题目 3要求“添加派生类 column的构造函数的定义”。同(2),另外带参数的构造函数的一般格式为:构造函数名(类型 1形参 1,类型 2形参 2,),所以这里添加“column(double radius。double height)”。 (4)题目 4要求“完成派生类 column的成员函数 print()的定义”。根据题干中输出结果,知道第一个输出值为 height,第二个输出值为 vol,即 area*h,所以这里添加“cout“height=“h“vol=“area*hendl;”。