【发布时间】:2015-03-21 16:45:11
【问题描述】:
我写了一个程序,让你输入数字并输出平均值。有时它不会输出确切的答案,我不知道为什么。例如,当我输入 1、2、10、-3 时,它输出 2,但它应该输出 2.50。另外,有没有办法通过输入一个字母,比如 N 而不是 0 来让它跳出循环?这是我的代码:
#include<stdio.h>
int main(){
int nA = 1;
int nSum = 0;
int input = 0;
double dAvg = 0;
int nums = 0;
printf("enter numbers to find the average\n");
printf("enter 0 to quit.\n");
while (nA !=0) {
scanf("%d", &input);
nA = input;
nSum+=nA;
if (nA !=0) {
nums = nums + 1;
}
dAvg = nSum / nums;
}
printf("your average is %lf\n", dAvg);
return 0;
}
【问题讨论】:
-
对于
nSum和nums的数据类型,您应该使用double而不是int。整数除法会截断结果。例如,10/3的结果将从3.3333...截断为3。 -
如果第一个数字是 0,你的程序有未定义的行为。
-
您需要多少平均值 - 平均值、众数或中位数?
-
感谢工作!不过,有没有办法通过使用字母而不是 0 来打破循环?