c++练习题---抽象类Shape

    技术2025-01-25  12

    6-5 抽象类Shape (20分)

    请编写一个抽象类Shape,包括两个纯虚函数,分别为计算面积getArea()和计算周长getPerim()。通过Shape类派生出矩形类Rectangle和圆类Circle,并计算各自的面积和周长。

    测试用例具体要求:输入1表示测试矩形类,之后输入矩形长和宽。输入2表示测试圆类,之后输入圆半径。

    Shape类定义如下:

    class Shape { public: virtual double getArea()=0; virtual double getPerim()=0; };

    裁判测试程序样例:

    #include <iostream> using namespace std; const double PI=3.14; class Shape { public: virtual double getArea()=0; virtual double getPerim()=0; }; /* ------请在这里填写答案 ------*/ int main() { Shape *p; int n; double w,h,r; scanf("%d",&n); switch(n) { case 1: { cin>>w>>h; Rectangle rect(w,h); cout<<"area="<<rect.getArea()<<endl; cout<<"perim="<<rect.getPerim()<<endl; break; } case 2: { cin>>r; Circle c(r); cout<<"area="<<c.getArea()<<endl; cout<<"perim="<<c.getPerim()<<endl; break; } } return 0; }

    输入样例1:

    在这里给出一组输入。例如:

    1 4 5

    输出样例1:

    在这里给出相应的输出。例如:

    area=20 perim=18

    输入样例2:

    在这里给出一组输入。例如:

    2 5

    输出样例2:

    在这里给出相应的输出。例如:

    area=78.5 perim=31.4

     代码实现:

    class Rectangle{ private: double a,b; public: Rectangle(double a_,double b_):a(a_),b(b_) { } double getArea() { return a*b; } double getPerim() { return 2*(a+b); } }; class Circle { private: double r; public: Circle(double r_):r(r_) { } double getArea() { return 3.14*r*r; } double getPerim() { return 2*3.14*r; } };

     

    Processed: 0.008, SQL: 9