读书人

float 用cout输出如何总是负数

发布时间: 2012-09-19 13:43:54 作者: rapoo

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;} 

读书人网 >C++

热点推荐