6-2 抽象类Shape (10 分)

请编写一个抽象类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;
		}
};



版权声明:本文为weixin_45886685原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_45886685/article/details/118466612