旭辉夜夜访 2022-03-03 20:52 采纳率: 100%
浏览 7
已结题

C++派生与继承问题输出有误

 输出多了9.26841e-315,我不知道什么原因。


#include<iostream>
#include<cmath>
using namespace std;
const double pi=3.14;
class Shape
{
public:
       virtual double Area()=0;
       virtual double Perimeter() = 0;
};
class Circle:public Shape
{
public:
       Circle(double rr);
       double Radius();  //获取私有量r值,以便为两个子类所使用
       double Area();
       double Perimeter();
private:
       double r; //圆的半径(也可以将Radius函数去掉,r定义为protected属性,这样在子类中可以直接使用r)
};

class In_Square:public Circle
{
public:
       In_Square(double rr);
       double Area();
       double Perimeter();
};
class Ex_Square:public Circle
{
public:
       Ex_Square(double r);
       double Area();
       double Perimeter();
};
int main()
{
      Shape *ptr;
       double r;
       cin>>r;
       ptr=new Circle(r);
       cout<<"Circle's area:"<<ptr->Area()<<endl;
       cout<<"Circle's perimeter:"<<ptr->Perimeter()<<endl;
       ptr=new In_Square(r);
    cout<<"In_Square's area:"<<ptr->Area()<<endl;
       cout<<"In_Square's perimeter:"<<ptr->Perimeter()<<endl;
       ptr=new Ex_Square(r);
    cout<<"Ex_Square's area:"<<ptr->Area()<<endl;
       cout<<"Ex_Square's perimeter:"<<ptr->Perimeter()<<endl;
       return 0;
}

Circle::Circle(double rr)
{
       r=rr;
}
double Circle::Radius()
{
       return r;
}
double Circle::Area()
{
       cout<<pi*r*r;
}
double Circle::Perimeter()
{
       cout<<2*pi*r;
}
In_Square::In_Square(double rr) :Circle(rr)
{

}

double In_Square::Area()
{
        double rr;
        rr=Circle::Radius();
        cout<<2*rr*rr;
}

double In_Square::Perimeter()
{
        double rr;
        rr=Circle::Radius();
        cout<<sqrt(2*rr*rr)*4;
}

Ex_Square::Ex_Square(double r) :Circle(r)
{

}

double Ex_Square::Area()
{
         double r;
         r=Circle::Radius();
         cout<<4*r*r;
}

double Ex_Square::Perimeter()
{
         double r;
         r=Circle::Radius();
         cout<<8*r;
}

img

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-03 21:15
    关注

    Area(), Perimeter()函数里的cout <<改为return

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

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 创建了问题 3月3日

悬赏问题

  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?