国家二级C++机试(操作题)模拟试卷483
基本操作题
1.请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程包含一个源程序文件proj1.cpp。其中位于每个注释“//ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:You are right.
注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
//proj1.cpp
#include
using namespace std;
class MyClass
{
public:
MyClass(int x):number(x){}
//ERROR ********found********
~MyClass(int x){}
//ERROR ********found********
void Judge(MyClass&obj);
private:
int number;
};
void Judge(MyClass&obj)
{
if(obj.number==10)
cout<<\\
(1)~MyClass(){}
(2)friend void Judge(MyClass&obj);
(3)MyClass object(10);
解析:(1)主要考查考生对析构函数的掌握,析构函数是没有形参的,因此把形参去掉即可,因为该类没有动态分配空间,所以不需要使用delete语句释放空间。
(2)主要考查考生对友元函数的掌握,在函数定义中有语句void Judge(MyClass&obj),在main函数中有语句Judge(object);,即Judge函数是可以被类外函数调用的,并且定义时没有加上类名和作用域,因此可以知道Judge函数是友元函数,需要在类型前加上friend。
(3)主要考查考生对构造函数调用的掌握,题目要求输出结果为:You are fight.,在Judge函数体内有语句:
if(obj.number==10)
cout<<\\
简单应用题
2.请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有类CPolygon(“多边形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序的正确输出结果应为:
20
10
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include
using namespace std;
class CPolygon{
public:
//*********found*********
_________//纯虚函数area声明
void printarea(void)
//*********found*********
{cout<<________<<endl;)
};
class CRectangle:public CPolygon{
int width; //长方形宽
int height; //长方形高
public:
CRectangle(int w, int h):
width(w),height(h){)
int area(void){return(width*height);)
};
class CTriangle:publ ic CPolygon{
int length; //三角形一边长
int height; //该边上的高
public:
CTriangle(int 1,int h):
length(1),height(h){}
//*********found*********
int area(void){return(_________)/2;)
};
int main(){
CRectangle rect(4,5);
CTriangle trgl(4,5);
//*********found*********
_________*ppoly1,*ppoly2;
ppoly1=&rect;
ppoly2=&trgl;
ppoly1->printarea();
ppoly2->printarea();
return 0;
}
(1)virtual int area(void)=0;
解析:(1)主要考查考生对纯虚函数的掌握,在定义纯虚函数时要看在派生类中函数的定义:int area(void)。由此可知纯虚函数应该为:virtual int area(void)=0;。
(2)主要考查考生对纯虚函数的掌握情况,由void printarea(void)可知,该函数要打印面积,因此在此要调用纯虚函数area,即cont<<area()。
(3)主要考查考生对数学公式的掌握,该函数要返回三角形面积,三角形的面积公式为长乘以该边上的高除以2,即return(length*height)/2;。
(4)主要考查考生对抽象类的掌握情况,根据程序段:
ppoly1=&rect;
ppoly2=&trgl;
可知指针ppoly1指向CReetangle类,而指针ppoly2指向CTfiangle类,因此在这里只能填这两种类的基类CPolygon类。
综合应用题
3.请使用VC6或使用【答题】菜单打开考生文件夹prog3下的工程prog3,其中包含了类Polynomial(“多项式”)的定义。
形如5x4+3.4x2一7x+2的代数式称为多项式,其中的5为4次项系数,3.4为2次项系数,一7为1次项系数,2为0次项(常数项)系数。此例缺3次项,意味着3次项系数为0,即省略了0x3。在Polynomial中,多项式的各个系数存储在一个名为coef的数组中。例如,对于上面的多项式,保存在coef[0]、coef[1]…coef[4]中的系数依次为:2.0、一7.0、3.4、0.0.5.0,也即对于i次项,其系数就保存在coef[i]中。成员函数getValue计算多项式的值,多项式中x的值是由参数指定的。
请补充完成文件Polynomial.cpp中成员函数getValue的定义。此程序的正确输出结果应为:
Value of p1 when x=2.0:59.8
Value of p2 when x=3.0:226.8
注意:只在
本文档预览:3600字符,共5011字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载