gpt4 book ai didi

c++ - 将 float 打印为十进制并修复错误的输出

转载 作者:行者123 更新时间:2023-11-28 06:07:10 24 4
gpt4 key购买 nike

我正在试验类并编写了这个示例代码。用户输入他们的注册号和两个标记。输出应该是它们的寄存器号和两个输入标记的平均值。我有两个问题:

  1. 如果我使用构造函数,如何使用 float 类型以十进制形式显示输出平均分数?

  2. 为什么寄存器号输出不正确?代码如下。

    #include<iostream.h>
    #include<conio.h>

    class abc
    {
    int reg, mark1, mark2;

    public:
    int avg;
    abc(int reg, int mark1, int mark2)
    {
    avg = (mark1 + mark2) / 2;
    }

    void display()
    {
    cout<<"Your average mark is:\n"<<avg<<"\n";
    cout<<"Your Register Number is:\n"<<reg<<"\n";
    }
    };

    void main()
    {
    clrscr();

    int num, m1, m2;

    cout << "Enter your register number\n";
    cin >> num;

    cout << "Enter your Mark 1 and Mark 2:\n";
    cin >> m1 >> m2;

    abc s1(num,m1,m2);
    s1.display();

    getch();
    }

我正在获取平均值(没有小数点)并且寄存器编号输出为 11196

最佳答案

在 C++ 中,构造函数参数不会自动存储在类成员中。我会将您的类声明更改为以下内容,请注意我为成员和函数参数使用了不同的名称(我喜欢将 m_ 用于私有(private)成员变量)。

class abc
{
int m_reg, m_mark1, m_mark2;
public:
int avg;

abc (int reg, int mark1, int mark2)
: m_reg(reg), m_mark1(mark1), m_mark2(mark2)
{
avg = (m_mark1+m_mark2)/2;
}

void display()
{
cout<<"Your average mark is:\n"<<avg<<"\n";
cout<<"Your Register Number is:\n"<<m_reg<<"\n";
}
};

如果您希望结果是小数(而不是四舍五入或取整到最接近的整数),您需要将平均声明和计算更改为:

// The new declaration
double avg;

// In your constructor
avg = (double) (m_mark1 + m_mark2) / 2.0;

关于c++ - 将 float 打印为十进制并修复错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com