- 7
- 0
- 约1.93千字
- 约 2页
- 2020-10-06 发布于浙江
- 举报
PAGE
PAGE 2
四、设计程序(共40分)
1)说明并定义一个长方形类CRectangle。其数据成员定义为私有,包括左下角点坐标x,y;x方向长度a与y方向长度b。定义公有成员函数作为CRectangle的外部接口,包括输入或修改长方形的坐标;输出该长方形坐标、长宽,周长与面积等若干个。必须包括以下函数:
①带参数的构造函数:实现在对象的创建时完成长方形坐标与尺寸的初始化。
②析构函数:使对象在被构造和析构时向用户发出相应提示信息。
③length()函数:计算长方形周长。
④area( )函数:计算长方形面积。
⑤求长方形重心与原点(0,0)距离的函数distance( ):将该函数声明为类CRectangle的友元函数,通过调用该函数计算长方形类的对象的重心与原点距离。
⑥重载运算符“”的函数:能输出CRectangle类对象的信息。
2)创建CRectangle的对象rect,左下角点(100,50),长度a=123,宽度b=68。调用类的成员函数或友元函数求该矩形周长、面积、矩形重心与原点距离。
答案:
[源程序]
#include iostream
#include math
using namespace std;
class CRectangle………………………………………………………………………………1分
{public:
CRectangle(double x1,double y1,double a1,double b1 );
~CRectangle( );
double length() const {return 2*(a+b);} ………………….………………………………5分
double area() const {return a*b;} …………………………………………………………5分
void set_xy(double xx,double yy){x=xx;y=yy;} //修改坐标
friend double distance(const CRectangle ); //加不加const都可以
friend ostream operator (ostream , CRectangle );
private:
double x,y,a,b; ………………………………………………………………………………2分
};
CRectangle::CRectangle(double x1,double y1,double a1,double b1) ...………………………5分
{x=x1; y=y1; a=a1; b=b1;}
CRectangle::~CRectangle()…………………………………2分
{coutDestructor called.endl;}
double distance(const CRectangle r2) …………………….…………………………………5分
{double d,xx,yy;
xx=r2.x+r2.a/2;yy=r2.y+r2.b/2; //注意:用r2.x等
d=sqrt(xx*xx+yy*yy);
return d;
}
ostream operator (ostream output, CRectangle r) …………………………..…………5分
{output(r.x,r.y),a=r.a,b=r.b;
return output;
}
int main()
{ CRectangle rect(100,50,123,68); //创建对象 ……….……………………………………2分
cout长方形左下角点及两边长度为:rectendl; …………………………………2分
cout周长为:rect.length()endl; ………………..…………………………………2分
cout面积为:rect.area()endl; …………………….………………………………2分
cout重心与原点的距离为:distance(rect)endl; …………………………………2分
//注意:对象rect在distance()中的位置
return 0;
}
运行结果://供参考,试卷上不用写出来
原创力文档

文档评论(0)