weixin_46384076 2021-07-03 08:33 采纳率: 75%
浏览 47
已采纳

请用C++编写下面的

定义一个形状类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

  • 写回答

1条回答 默认 最新

  • Soda Wang 2021-07-03 11:55
    关注

    实话说,这抽象是一点用也没有

    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊