计算机等级考试二级C++模拟题及解析9上机部分
一、改错题
使用VC6打开考生文件夹下的工程kt14_1,此工程包含一个源程序文件kt14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
A:noparameters
B:intparameter
A:noparameters
B:intparameter
C:intparameter
源程序文件kt14_1.cpp清单如下:
#include
classA
{ /*****************found*****************/
private:
A(){cout<<"A:noparameters\n";}
A(inta){cout<<"A:intparameter\n";} };
classB:publicA
{ public:
B(inta){cout<<"B:intparameter\n";} };
/*****************found*****************/
classC:publicB,publicA
{ public:
/*****************found*****************/
C(inta)::B(a){cout<<"C:intparameter\n";} };
voidmain()
{ Bb(1);
Cc(2); }
【参考答案】
(1)将private:改为:public:
(2)将class C:public B,public A改为:class C:public B
(3)将C(int a)::B(a){cout<<"C: int parameter\n"; }
改为:C(int a):B(a){cout<<"C: int parameter\n";}
【试题解析】
(1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用;
(2)A已经是B的基类,C公有继承B,A也就成为了C的基类,根据程序的运行结果可知,C是要公有继承B;
(3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;
.二、简单应用题
编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。
例如:n为1000时,函数值应为s=153.909064。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
doublefun(intn)
{ main()
{ clrscr();
printf("s=%f\n",fun(1000)); }
【参考答案】
double fun(int n)
{ double s=0.0;
int i;
for(i=0; i /*从0~n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/ if(i%3==0&&i%7==0) s=s+i; s=sqrt(s); /*对s求平方根*/ return s; } 【试题解析】 本题的解题思路是:逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被3整除同时又能被7整除,注意:这两个条件要求同时成立,因此用到了“&&”运算符。满足条件,该数就被累加到s中去,所有符合条件的数找完后,用sqrt()函数对s求平方根。
www.59wj.com
三、综合应用题
使用VC6打开考生文件夹下的工程kt14_3。此工程包含一个kt14_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1**”之后添加适当的语句。
(2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**”之后添加适当的语句。
(3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。
(4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员z。请在注释“//**4**”之后添加适当的语句。
输出结果如下:
[1,2]
[3,4,5]
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt14_3.cpp清单如下:
#include
classCoordinate
{ protected:
//**1**
public:
Coordinate(inta=0,intb=0);
//**2** };
Coordinate::Coordinate(inta,intb)
{ //**3** }
voidCoordinate::Display()const
{ cout<<'['< classThreeDCoord:publicCoordinate { intz; public: ThreeDCoord(inta=0,intb=0,intc=0); virtualvoidDisplay()const; }; //**4** voidThreeDCoord::Display()const { cout<<'['< voidmain() { Coordinatec(1,2); ThreeDCoordt(3,4,5); c.Display(); t.Display(); } 【参考答案】 (1)protected: int x; int y; (2)virtual void Display() const; (3)x=a; y=b; (4)ThreeDCoord::ThreeDCoord(int a, int b, int c) : Coordinate(a, b) 【试题解析】 本题主要考查对类数据成员的定义、构造函数、派生类及虚函数的理解,是C++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。
www.59wj.com
如果觉得《计算机等级考试二级C++模拟题及解析9(上机)》二级C++上机题库,jsj不错,可以推荐给好友哦。