我正在试验类并编写了这个示例代码。用户输入他们的注册号和两个标记。输出应该是它们的寄存器号和两个输入标记的平均值。我有两个问题:
如果我使用构造函数,如何使用
float
类型以十进制形式显示输出平均分数?为什么寄存器号输出不正确?代码如下。
#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/