标题:计算圆周长,面积的程序,我的结果是错的 请各位亲们帮我看下可好?
只看楼主
晓小晓小
Rank: 2
等 级:论坛游民
帖 子:12
专家分:38
注 册:2014-5-15
结帖率:66.67%
已结贴  问题点数:20 回复次数:15 
计算圆周长,面积的程序,我的结果是错的 请各位亲们帮我看下可好?
#include <iostream.h>
class Box
{public:
double girth();  
double area();
private:
    int r;
};
double Box::girth()
{double girth=0;
girth=2*3.14*r;
return girth;
}
double Box::area()
{double area=0;
    area=3.14*r*r;
return area;

}
int main()
{int r;
double girth,area;
Box box1;
cin>>r;
cout<<"girth="<<box1.girth()<<endl;
cout<<"area="<<box1.area()<<endl;
return 0;
}    为什么结果不对啊   亲们帮我看下,顺便解释下为什么 好么?
搜索更多相关主题的帖子: return double public include private 
2014-06-04 13:00
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
得分:0 
....

[ 本帖最后由 Susake 于 2014-6-4 15:38 编辑 ]

仰望星空...........不忘初心!
2014-06-04 13:18
gobraves
Rank: 2
等 级:论坛游民
帖 子:46
专家分:16
注 册:2013-8-3
得分:3 
1.应该是#include<iostream>,并且加上using namespace std
2.一个类的私有变量r,你赋值了吗,你main函数中的r和box类中的r完全不是同一个量,所以你运行时半径r实际上是一个随机值
2014-06-04 14:40
靠谱的白蓝
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:189
注 册:2013-12-11
得分:0 
回复 3 楼 gobraves
在类里面是不能赋初值的!
2014-06-04 20:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
結果不對是肯定的。你爲什麽不嘗試在類的girth()方法中測試一下對象的半徑是不是cin輸入的那個?查到後告訴我你的思考結論是什麽。

授人以渔,不授人以鱼。
2014-06-04 20:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
仔細翻翻書,看類的私有變量聲明起什麽作用、在外部如何讀寫私有變量。看文字,不要總看代碼,不管是書上的還是什麽高手的!

授人以渔,不授人以鱼。
2014-06-04 20:55
靠谱的白蓝
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:189
注 册:2013-12-11
得分:7 
添加一个输入函数,cin>>r,box1.r=r;将主函数和类中r赋值。
#include <iostream.h>
class Box
{
public:
    double girth();
    double area();
    int r;
};
double Box::girth()
{
    double girth=0;
    girth=2*3.14*r;
    return girth;
}
double Box::area()
{
    double area=0;
    area=3.14*r*r;
    return area;
}
int main()
{
    int r;
    Box box1;
    cout<<"请输入半径:"<<endl;
    cin>>r;
    box1.r=r;
    cout<<"girth="<<box1.girth()<<endl;
    cout<<"area="<<box1.area()<<endl;
    return 0;
}
2014-06-04 22:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
回复 7 楼 靠谱的白蓝
你編譯過了嗎?

授人以渔,不授人以鱼。
2014-06-04 22:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:5 
程序代码:
#include <iostream>
#include <cstdlib>
#include <conio.h>

class Circle
{
public:

    Circle() : radius(0.0) {}    // 默认构造函数,圆的半径为零
    Circle(double r);            // 带参构造函数

    // 周长
    double girth(void);

    // 面积
    double area(void);

private:

    static const double pi;        // 专属于类的静态常量

    double radius;                // 半径字段
};

// 静态常量的初始化
const double Circle::pi = 3.14;

Circle::Circle(double radius)
{
    // 把参数传递给对象内私有字段
    this->radius = radius;
}

double Circle::girth(void)
{
    return 2 * pi * radius;
}

double Circle::area(void)
{
    return pi * radius * radius;

}

int main(void)
{
    int r;
    std::cout << "Please input the radius: ";
    std::cin >> r;

    Circle Circle1(r);            // 用输入的半径值创建一个圆对象实例
    std::cout << "Circle1" << std::endl;
    std::cout << "girth = " << Circle1.girth() << std::endl;
    std::cout << "area = " << Circle1.area() << std::endl << std::endl;

    Circle Circle2(10.0);        // 用直接指定半径值创建一个圆对象实例
    std::cout << "Circle2" << std::endl;
    std::cout << "girth = " << Circle2.girth() << std::endl;
    std::cout << "area = " << Circle2.area() << std::endl << std::endl;

    _getch();
    return EXIT_SUCCESS;
}


[ 本帖最后由 TonyDeng 于 2014-6-4 23:34 编辑 ]

授人以渔,不授人以鱼。
2014-06-04 23:18
靠谱的白蓝
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:189
注 册:2013-12-11
得分:0 
回复 8 楼 TonyDeng
嗯,编译通过的。
2014-06-04 23:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-432466-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.600193 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved