c++输入一组数求平均数

#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