应用题
3.请打开考生文件夹下的解决方案文件proj3,此工程中包含一个源程序文件proj3.epp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示矩形的类MyReetangle;程序应当显示:
(0,2)(2,2)(2,0)(0,0)4
但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:
(1)在“//** 1 ** **** found ****”的下方是构造函数的定义,它用参数提供的左上角和右下角的坐标对up_left和down_right进行初始化。
(2)在“//** 2 ** ****found ****”的下方是成员函数getDownLeft的定义中的一条语句。函数getDownLeft返回用MyPoint对象表示的矩形的左下角。
(3)在“//** 3 ** ****found****”的下方是成员函数area的定义,它返回矩形的面积。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。
//proj 3.cpp
#include<iostream>
using namespace std;
class MyPoint{//表示平面坐标系中的点的类
double x;
double y;
public:
MyPoint(double x,double y)
{this一>x=x;this一>y=y;}
double getx()const{return x;}
double gety()const{return y;}
void show()const{cout<<'('<<x<<','<<y<<')';}
};
class MyRectangle{ //表示矩形的类
MyPoint up left; //矩形的左上角顶点
MyPoint down right;//矩形的右下角顶点
public:
MyRectangle(MyPoint upleft,MyPoint downright);
MyPoint getUpLeft()COnst{return up left;)//返回左上角坐标
MyPoint getDownRight()const{ return down right;} //返回右下角坐标
MyPoint getUpRight()const;
//返回右上角坐标
MyPoint getDownLeft()const;
//返回左下角坐标
double area()const; //返回矩形的面积
};
//** 1 *********found*******
MyRectangle:: MyRectangle(_________):
up_left(p1),down_right(p2){}
MyPoint MyRectangle::getUpRight()const
{
return MyPoint(down_right.
getX(),up_left.getY());
}
MyPoint MyRectangle:: getDownLeft()const
{
//**2** *******found*******
return MyPoint(__________);
}
//**3** *******found*******
_________area()const
{
return(getUpLeft().getX()-getDownRight().getX()) *(getDownRight().getY()-getUpLeft().getY());
}
int main()
{
MyRectangle r(MyPoint(0,2),MyPoint(2,0));
r.getUpLeft().show();
r.getUpRight().show();
r.getDownRight().show();
r.getDownLeft().show();
cout<<r.area()<<endl;
return 0;
}
【正确答案】(1)MyPoint p1,MyPoint p2
(2)up_left.getX(),down_right.getY()
(3)double MyRectangle::
【答案解析】(1)考查构造函数,构造函数中的参数要给私有成员赋值,在下句中up_left(p1),down_right(p2){}指出私有成员赋值要使用形参p1和p2,因此这里参数要定义为MyPoint,p1,MyPoint p2。
(2)主要考查成员函数的返回语句,MyPoint My Rectangle::getDowni庙()const函数要求返回一个左下角的点坐标,因此使用语句MyPoint(up_left.getX(),down_right.getY());。
(3)主要考查成员函数的定义,在MyRectangle类中已经声明double area()const,因此此处只要添加double My.Rectangle::即可。