Galaxy星 2021-06-20 14:13 采纳率: 100%
浏览 40
已采纳

为什么输出结果是0(或是乱码)?)

将下面代码给定输入3 3 4 3 4,为什么输出结果是0(或是乱码)?)该如何修改(对应的正确输出28.27 12.00 6.00

#include <iostream>
using namespace std;

class Shape
{
    public:
    virtual double Area() = 0;

};
class Circle :public Shape
{
public:
    double Area()
    {
     return 3.1415926 * m_R *m_R;
    }
    int m_R = 0;
};
class Rectangle : public Shape
{
public:
    double Area()
    {
        return m_W *m_L;
    }
    int m_W,m_L = 0;
};
class Triangle : public Shape
{
public:
    double Area()
    {
        return 0.5*m_B*m_H;
    }
    int m_B,m_H = 0;
};
int main()
{
    Circle circle;
    Rectangle rectangle;
    Triangle triangle;
    scanf("%d %d %d %d %d",&circle.m_R,&rectangle.m_W,&rectangle.m_L,&triangle.m_B,&triangle.m_H);   
    
    Circle *c = new Circle;
    printf("%f\n",c->Area());
    delete c;
    Rectangle *r = new Rectangle;
    printf("%f\n",r->Area());
    delete r;
    Triangle *t = new Triangle;
    printf("%f\n",t->Area());
    delete t;
    
}

  • 写回答

1条回答 默认 最新

  • 暖晴的天 2021-06-20 14:22
    关注

    修改如下:

    #include <iostream>
    using namespace std;
    
    class Shape
    {
    public:
        virtual double Area() = 0;
    
    };
    class Circle :public Shape
    {
    public:
        double Area()
        {
            return 3.1415926 * m_R * m_R;
        }
        int m_R = 0;
    };
    
    class Rectangle : public Shape
    {
    public:
        double Area()
        {
            return m_W * m_L;
        }
        int m_W, m_L = 0;
    };
    
    class Triangle : public Shape
    {
    public:
        double Area()
        {
            return 0.5 * m_B * m_H;
        }
        int m_B, m_H = 0;
    };
    
    int main()
    {
        Circle circle;
        Rectangle rectangle;
        Triangle triangle;
        scanf_s("%d %d %d %d %d", &circle.m_R, &rectangle.m_W, &rectangle.m_L, &triangle.m_B, &triangle.m_H);
    
        
        printf("%f\n", circle.Area());
        
        printf("%f\n", rectangle.Area());
    
        printf("%f\n", triangle.Area());
    
    }

    但是你这个代码太不规范了。。还有是不是对类没有理解到位。。前面已经有类实例了,后面为什么还要new一个实例

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用