我几乎是 c++ 的新手。我创建了一个学生班级。首先,当我返回标记的媒体时,它不是浮点值。例如:如果我输入 5 和 10,它返回 7 而不是 7.5。
其次,当我想使用函数 disp(( 显示名称和媒体时,它不起作用。
谁能帮上一点忙?
谢谢
#include <iostream>
using namespace std;
class student{
public:
string name;
int mark1, mark2;
float calc_media(){
float media = (mark1 + mark2)/2;
return media;
}
void disp(){
cout << "Student:" << name << endl;
cout << "media:"<< calc_media() << endl;
}
};
int main (){
student peter;
cout <<"name:" ;
cin>>peter.name;
cout <<"mark1:" ;
cin>>peter.mark1;
cout <<"mark2:" ;
cin>>peter.mark2;
cout <<"ALL:" << peter.disp();
return 0;
}
在此表达式中:
(mark1 + mark2) / 2;
您正在执行整数除法,因为变量和文本都是int
类型。您可以简单地执行以下操作:
(mark1 + mark2) / 2.0;
相反,获得浮点除法。
要使disp
工作,请注意它不会返回任何内容,因此您需要简单地像这样调用它:
peter.disp();
并且不将此函数的结果传递给cout
。
或者,您可以像这样重载operator<<
,而不是disp
:
std::ostream& operator<<(student const &s, std::ostream &out)
{
out << "Student:" << name << endl;
out << "media:"<< calc_media() << endl;
return out;
}
然后像这样使用它:
cout << peter;
在这里,您正在执行的操作称为整数除法,变量mark1
和mark2
都是整数,因此2
,它将为您提供一个整数。
float calc_media(){
float media = (mark1 + mark2)/2;
尝试将2
替换为2.0
以实现浮点除法。
float media = (mark1 + mark2)/2.0;
由于您的disp
函数没有返回某些内容,因此您无需cout
它。你可以这样做,
cout <<"ALL:";
peter.disp();