计算机小混子 2022-02-18 04:11 采纳率: 100%
浏览 38
已结题

错在哪了,输出结果和想的不一样,以及请解答在下几个问题

question 1 Circle::Circle(float r) { //构造函数初始化数据成员radius
radius = r; radius = r; 不是多此一举吗? 这个构造函数的意义和作用是什么?
question 2 输入结果为10 输出结果与想法不一致(fenceCost为0),输出结果如下图,求解释代码哪里出了问题?
question 3 私有接口成员中一般放什么?
question 4 Circle pool(radius);
Circle poolRim(radius + 3);这两个语句的含义及其作用?
question 5 此语句的含义是什么? poolRim.circumference()


// 4-3游泳池改造预算,Circle类.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include<iostream>
using namespace std;
const float PI = 3.141593;//给出圆周率的值
const float FENCE_PRICE = 35;//栅栏的单价
const float CONCRETE_PRICE = 20;//过道水泥的单价
float r;
class Circle {                  //声明定义类Circle及其数据和方法
public:                       //外部接口
    Circle(float r);              //构造函数
    float circumference();        //计算圆的周长
    float area();                  //计算圆的面积
private:                        //私有接口成员
    float radius;                //圆的半径
};
Circle::Circle(float r) {             //构造函数初始化数据成员radius
    radius = r;
}
//计算圆的周长
float Circle::circumference() {
    return PI * 2 * r;
}
//计算圆的面积
float Circle::area() {
    return PI * radius * radius;
}
int main() {
    float radius;
    cout << "Enter the radius of the pool:";//提示用户输入半径
    cin >> radius;

    Circle pool(radius);           //游泳池边界
    Circle poolRim(radius + 3);    //栅栏对象
    //计算栅栏对象并输出
    float fenceCost = poolRim.circumference() * FENCE_PRICE;
    cout << "Fence Cost is $" <<fenceCost<< endl;
    //计算过道造价并输出
    float concreteCost = (poolRim.area() - pool.area()) * CONCRETE_PRICE;
    cout << "Concrete Cost is $" << concreteCost << endl;
        


}
输入的是10 输出结果如图

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/018222821546111.png "#left")
  • 写回答

1条回答 默认 最新

  • 於黾 2022-02-18 09:29
    关注

    1.r是构造函数传入的参数,它的生命周期在构造函数执行完毕就结束了
    如果你想在别的函数里调用它,它早没了,那你就当然的要用一个全局变量来把它保存住
    2.你后面的函数里应该使用radius ,因为你保存在这里了,但是你错误的使用了r
    r作为传入参数,你不要再定义一个全局变量也叫r了,容易把自己整不会了
    3.不明白你想表达什么
    4.Circle pool(radius)定义了一个圆,名字叫pool,半径是radius
    Circle poolRim(radius + 3)是另一个圆,名字叫poolRim,半径是radius + 3
    5.就是调用Circle::circumference获取圆周长呀,但是因为你里面错误的使用了r,所以只能返回0

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

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。