首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

float 用cout输出如何总是负数

2012-09-19 
float 用cout输出怎么总是负数#includeiostreamusing namespace stdclass Shape{public:virtual float

float 用cout输出怎么总是负数
#include<iostream>
using namespace std;
class Shape
{public:
virtual float area(){return 0.0;};
virtual void shapename() const=0;
virtual void printArea(){};
};
class Circle:public Shape
{
public:
  Circle(float a){r=a;}
  virtual float area();
  virtual void shapename() const {cout<<"Circle:"<<endl;}
  virtual void pintArea();
private:
float x;
float r;
};
void Circle::pintArea()
{
  shapename();
  cout<<x<<endl;
}
float Circle::area()
{
  x=3.14*r*r;
  return x;
}
class Rectangle:public Shape
{
public:
  Rectangle(float a,float b){x=a;y=b;}
  virtual float area();
  virtual void shapename() const {cout<<"Rectangle:"<<endl;}
  virtual void pintArea();
private:
  float z,x,y;
};
void Rectangle::pintArea()
{
  shapename();
  cout<<z<<endl;
}
float Rectangle::area()
{
  
  z=x*y;
  return z;
}

int main()
{
 Circle c1(5);
 c1.pintArea();
 Rectangle r1(2,2);
 r1.pintArea();

 return 0;
}
为什么输出结果是 负数
百思不得其解

[解决办法]
哥 打印x 请调用x的赋值函数 area()
同理得证
[解决办法]
你的面积x又没被计算过
Circle c1(5);
c1.area();
 c1.pintArea();

[解决办法]

C/C++ code
#include<iostream>using namespace std;class Shape{public:virtual float area(){return 0.0;};virtual void shapename() const=0;virtual void printArea(){};};class Circle:public Shape{public:    Circle(float a){r=a;}    virtual float area();    virtual void shapename() const {cout<<"Circle:"<<endl;}    virtual void pintArea();private:    float x;    float r;};void Circle::pintArea(){    area();    shapename();    cout<<x<<endl;}float Circle::area(){    x=3.14*r*r;    return x;}class Rectangle:public Shape{public:    Rectangle(float a,float b){x=a;y=b;}    virtual float area();    virtual void shapename() const {cout<<"Rectangle:"<<endl;}    virtual void pintArea();private:    float z,x,y;};void Rectangle::pintArea(){        area();    shapename();    cout<<z<<endl;}float Rectangle::area(){    z=x*y;    return z;}int main(){    Circle c1(5.0);    c1.pintArea();    Rectangle r1(2,2);    r1.pintArea();    return 0;} 

热点排行