国家二级C++机试(操作题)模拟试卷359
基本操作题
1.请使用VC6或使用【答题】菜单打开考生文件夹pmjl下的工程pmjl。其中有线段类Line的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:
End point 1=(1,8),End point 2=(5,2),length=7.2111。
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include
#include
using namespace std;
class Line;
double length(Line);
class Line{ //线段类
double x1,y1;//线段端点1
double x2,y2;//线段端点2
public:
//ERROR**********found**********
Line(double x1,double yl,double
x2,double y2)const{
this->x1=x1;
this->y1=y1;
this->x2=x2;
this->y2=y2;
}
double getX1()const{return x1;}
double getYl()const{return y1;}
double getX2()const{return x2;}
double getY2()const{return y2;}
void show()const{
tout<<”End point 1=(”<<x1<<”,”
<<y1;
cout<<”),End point 2=(”<<x2
<<”,”<<y2;
//ERROR********** found**********
cout<<”),length=”<<length
(this)
<<”o”<<endl;
}
};
double length(Line 1){
//ERROR**********found**********
return sqrt((1.x1—1.x2)*(1.x1—
1.x2)+(1.y1—1.y2)*(1.y1一1.y2));
}
int main(){
Line r1(1.0,8.0,5.0,2.0);
r1.show();
return 0;
}
(1)Line(double x1,double y1,double x2,double y2){
(2)cout<<”),length=”<<length(*this)<<“。”
<<endl:
(3)return sqrt((1.getXl()一1.get)(2())*(1.getXl
()一1.getX2())+(1.getYl()一1.getY2())*(1.getYl
()一1.getY2()));
解析:(1)主要考查考生对构造函数的掌握,构造函数要给私有成员赋初始值,因此不能使用eonst来限制。
(2)主要考查考生对this指针的掌握,由函数length的声明double length(Line);可知,length函数的形参是Line类,在void show()const函数里,this指针指向的是当前Line类,因此可以用*this表示当前Line类。
(3)主要考查考生对成员函数的掌握,length函数是类外函数,不能直接调用类的私有成员,因此要通过成员函数取得对应的值。
简单应用题
2.请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中包含一个头文件shape.h,其中包含了类Shape、Point和Triangle的声明;包含程序文件shape.cpp,其中包含了类Tfiangle的成员函数和其他函数的定义;还包含程序文件proj2.cpp,其中包含测试类Shape、Point和Triangle的程序语句。请在程序中的横线处填写适当的代码并删除横线,以实现上述功能。此程序的正确输出结果应为:
此图形是一个抽象图形,周长=0,面积=0
此图形是一个三角形,周长=6.82843,面积=2
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
//shape.h
class Shape{
public:
virtual double perimeter()const{
return 0;) //返回形状的周长
virtual double area()const{re-
turn 0;} //返回形状的面积
virtual const char* name()const
{return\\
(1)X(x0),Y(y0)
(2)Point point1,point2,point3
(3)retum length(point1,point2)+length(point1,
point3)+length(point2,point3)
(4)void show(Shape&shape)
解析:(1)主要考查考生对构造函数的掌握,题目要求用x0、y0初始化数据成员x、y,因此在这里使用成员列表初始化,即Point(double x0,double y0):x(x0),y(y0){}。
(2)主要考查考生对构造函数的掌握,题目要求定义3个私有数据成员。由构造函数可知3个私有数据成员的类型都是Point,名称分别为point1、point2和point3,因此空格处填写:Point peint1,point2,point3。
(3)主要考查考生对成员函数的掌握,题目要求使用咖语句,利用length函数计算并返回三角形的周长。
length函数返回的是两点间的距离,因此return语句只要返回三角形三条边的距离和,即为三角形的周长。
(4)主要考查考生对成员函数的掌握,这里要定义show函数的函数头(函数体以前的部分)。由主函数main中show函数的使用情况Show(s)和show(tri)可知,S是Shape类,tri是Triangle类,因为Triangle是Shape类的派生类,所以可知show函数的参数是Shape类型,无返回值,得出语句void show(Shape&shape)。
3.请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStack类
本文档预览:3600字符,共8084字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载