华科C++第七次上机作业.doc
![华科C++第七次上机作业.doc](https://img.360docs.net/img46/18a9a2ltjz65a3ezw8jt25w2ouyi7ibk-61.webp)
![华科C++第七次上机作业.doc](https://img.360docs.net/img46/18a9a2ltjz65a3ezw8jt25w2ouyi7ibk-e2.webp)
第七次上机作业
1、范例:设计并测试一个矩形类(Rectangle)。属性为矩形的左下角与右上角的坐标,矩形
水平放置。操作为计算矩形的周长和面积。
2、 #include
3、 #include
4、 using namespace std;
5、 class Rectangle{
6、double left, top;
7、double right, bottom;
8、 public:
9、Rectangle(double l=0,double t=0,double r=0,double b=0);
10、~Rectangle(){};
11、void Assign(double l,double t,double r,double b);
12、void Show();
13、double Area();
14、double Perimeter();};
15、Rectangle:: Rectangle(double l ,double t, double r, double b){
16、left=l ;top =t;
17、right=r; bottom=b;}
18、void Rectangle::Assign(double l,double t,double r,double b){
19、left=l ;top =t;
20、right=r; bottom=b;}
21、void Rectangle::Show(){
22、cout<< "left-top point is("< 23、cout<<"right-bottom point is("< 24、double Rectangle::Area(){ 25、return fabs((right-left)*fabs(bottom-top)); 26、} 27、double Rectangle::Perimeter(){ 28、return 2*(fabs(right-left)+fabs(bottom-top)); 29、} 30、int main(){ 31、Rectangle rect; 32、(); 33、(100,200,300,400); 34、(); 35、Rectangle rect1(0,0,200,200); 36、(); 37、(100,200,300,400); 38、(); 39、cout<<"?? ?y"<<()<<'\t'<<"? ü3¤ "<<()< 40、cout<<"?? ?y"<<()<<'\t'<<"? ü3¤ "<<()< 41、return 0;} 42、 (1)将Rectangle(double l=0, double t=0, double r=0, double b=0); 改为Rectangle(double l, double t, double r, double b); 程序仍能正确运行吗为什么 答:无法正确运行,因为数据成员没有初值。 (2)注意成员函数 void Show( ) 、 double Area () 、 double Perimeter( ) 的使用,因为在第三章 如果需编写类似功能的一般函数是需要带参数(形参)的。 而在此处作为类的成员函数又不需要带参数。思考为什么 答:构造函数是隐式调用的 (3)理解 void Assign(double l,double t,double r,double b);函数的作用。将Rectangle(double l=0, double t=0, double r=0, double b=0); 改为 Rectangle(double l, double t, double r, double b); 这时,有人认为 Rectangle(double l, double t, double r, double b) 和 void Assign(double l,double t, double r,double b) 的功能相同,那么 Assign 函数能否去掉呢请试一试,结果会怎样 答:不能,结果无法运行。 2、定义一个圆类(Circle),要求用两种方法定义: 方法一:要求属性为半径,操作为计算圆的周长和面积。 #include #include using namespace std; const double PI=; class Circle{ private: double Radius; public : Circle(double r=0); ~Circle(){}; void Assign(double r); double zc(); double mj(); }; Circle::Circle(double r){ Radius=r;} void Circle::Assign( double r){ Radius=r;} double Circle::zc(){ return (PI*Radius*2); } double Circle::mj(){ return (PI*Radius*Radius);} int main (){ Circle yuan; ; cout<<" 周长 "<<()< cout<<" 面积 "<<()< return 0; } 方法二:要求属性为半径(radius)、圆周长和面积,操作为输入半径,并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为 0,周长和面积在构造函数中生成)和拷贝构造函数。