定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数 定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周长getPerimeter()和面积getArea() 定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea() 定义一个子类圆形类Circle继承自Shape,拥有半径属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
在main函数中,分别构造三个Shape类的变量,分别指向一个Square、Rectangle、Circle对象,并输出他们的周长、面积.
输入格式:
正方形类的边长 长方形类的长宽 圆类的半径
输出格式:
正方形的周长、面积 长方形的周长、面积 圆形的周长、面积
输入样例:
在这里给出一组输入。例如:
1
1 2
2
输出样例:
在这里给出相应的输出。例如:
4.00 1.00
6.00 2.00
12.57 12.57
实话说,这抽象是一点用也没有
#include <iomanip>
#include <iostream>
using namespace std;
const double pi = 3.1416;
class Shape {
public:
double getPerimeter() { return -1; };
double getArea() { return -1; };
};
class Square : public Shape {
private:
double len;
public:
Square(double len) : len(len){};
double getPerimeter() { return len * 4; }
double getArea() { return len * len; }
};
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double width, double height) : width(width), height(height) {}
double getPerimeter() { return (width + height) * 2; }
double getArea() { return width * height; }
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double radius) : radius(radius) {}
double getPerimeter() { return 2 * pi * radius; }
double getArea() { return pi * radius * radius; }
};
int main() {
double len, width, height, radius;
cin >> len >> width >> height >> radius;
Square square = Square(len);
Rectangle rect = Rectangle(width, height);
Circle circle = Circle(radius);
cout << fixed << setprecision(2);
cout << square.getPerimeter() << " " << square.getArea() << endl;
cout << rect.getPerimeter() << " " << rect.getArea() << endl;
cout << circle.getPerimeter() << " " << circle.getArea() << endl;
return 0;
}