C++ 这个求平均数的程序哪错了(保留两位小数)?

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:07:59
#include <iostream>
using namespace std;
void main()
{
double n,s=0,i=0;
cout.precision(2);
while(getchar()!='\n')
{
cin>>n;
s=s+n;
i++;
}
cout<<fixed<<s/i<<endl;
}

明显是你的循环条件有问题嘛
getchar()

怎麼可能用这个呢
第一个输入的字符被他吃掉了,然后不能输入第2个直接就退出了
倒不如老老实实
#include <iostream>
using namespace std;
void main()
{
double n,s=0,i=0;
cout.precision(2);

cin>>n;
while(cin.good() && !cin.eof())
{
s=s+n;

cin>>n;
i++;
}
cout<<fixed<<s/i<<endl;
}

输入字符或者ctrl+z结束

我不是很确定cout.precision(2); 可不可以,不过cout<<fixed<<s/i<<endl; 应该有问题。<<的优先级高于/,所以输出的可能是s的值而不是平均值。保留的小数位数最好通过setprecision函数来进行。