#include <iostream>
using namespace std;
int main()
{
int num=0,x;
double sum=0;
double a[100];
while(cin>>x && getchar()!='\n')
{
a[num]=x;
num++;
sum+=x;
}
cout<<sum/num<<endl;
return 0;
}
如上所示 调试之后发现最后一个数没有被算进去……不知道为啥子。
#include <iostream>
using namespace std;
int main()
{
int num=0,x;
double sum=0;
double a[100];
while(cin>>x)
{
a[num]=x;
num++;
sum+=x;
if (getchar()=='\n') break;
}
cout<<sum/num<<endl;
return 0;
}
改成这样就好了
假如是 1 2 3 4 5 6 7,然后你输入了回车,那么 7 就会被忽略掉,因为 7 后面就是回车,所以 7 不会被算进去
给你举个例子:
加入输入10 20 30\n
首先x读取10,getcher()读取空格;符合循环条件,执行循环体;
然后x读取20,getcher()读取空格;符合循环条件,执行循环体;
然后x读取30,getcher()读取回车符;发现读取到的字符等于'\n',不符合循环条件,不执行循环体,退出。
解决方法:
#include <iostream>
using namespace std;
int main() {
int num = 0, x;
double sum = 0;
double a[100];
while (cin >> x) {
a[num] = x;
num++;
sum += x;
if (getchar() == '\n') break;
}
cout << sum / num << endl;
return 0;
}
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632