2772 - 求面积和周长
声明一个Shape抽象类,在此基础上派生出矩形Rectangle和圆Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( )函数计算对象的周长。完成类的设计,其中PI取3.14159,要求不能修改主函数。
int main(){
double radius;//圆半径
double a,b;//矩形长和宽
cin>>radius>>a>>b;
Circle c(radius);
Rectangle rect(a,b);
Shape* pShapeArray[]={&c,&rect};
for (int i=0;i<2;i++){
cout<<"perimeter:"<<pShapeArray[i]->GetPerim( )<<endl;
cout<<"area:"<<pShapeArray[i]->GetArea()<<endl;
}
return 0;
}
题目输入
输入2行,第1行输入圆的半径,第2行输入矩形的长和宽。
题目输出
输出圆和矩形的周长与面积。
输入/输出样例
题目输入
1 2 3
题目输出
perimeter:6.28318 area:3.14159 perimeter:10 area:6
C++解答
#include<iostream> using namespace std; class Shape {public: Shape(){} ~Shape(){} virtual float GetPerim()=0; virtual float GetArea()=0; }; class Rectangle:public Shape {public: Rectangle(float i,float j):L(i),W(j){} ~Rectangle(){} float GetPerim(){return 2*(L+W);} float GetArea(){return L*W;} private: float L,W; }; class Circle:public Shape {public: Circle(float r):R(r){} float GetPerim(){return 3.14159*2*R;} float GetArea(){return 3.14159*R*R;} private: float R; }; int main(){ double radius;//圆半径 double a,b;//矩形长和宽 cin>>radius>>a>>b; Circle c(radius); Rectangle rect(a,b); Shape* pShapeArray[]={&c,&rect}; for (int i=0;i<2;i++){ cout<<"perimeter:"<<pShapeArray[i]->GetPerim( )<<endl; cout<<"area:"<<pShapeArray[i]->GetArea()<<endl; } return 0; }