【发布时间】:2017-01-27 03:24:10
【问题描述】:
我对 C 和编程非常陌生,我在获取 5 个数字的平均值时遇到了问题。我已经尝试了所有我能想到的方法,但我不知道为什么我没有得到除 0 之外的数字。我的代码是:
#include <stdio.h>
int main (void)
{
long int first,second,third,fourth,fifth, sum;
float avg = (first+second+third+fourth+fifth)/5;
printf("Please put in five numbers\n");
scanf("%d%d%d%d%d", &first, &second, &third, &fourth, &fifth);
printf("You entered: %d %d %d %d %d\n" , first, second, third, fourth, fifth);
sum = first+second+third+fourth+fifth;
printf("The sum of the numbers you entered is %d\n",
sum);
printf("The average is %d\n", avg);
return 0;
}
【问题讨论】:
-
1) 输入后进行平均计算。例如
avg=(float)sum/5;2) 将%ld用于long int -
2) 读取输入后,除以
5.0,而不是5,执行FP除法而不是整数除法。使用"The average is %f\n"匹配float avg-f,而不是d。 -
4) 将
%f用于float -
如果你在写任何代码之前先写出算法,对你会有很大帮助。我无法想象您会编写一个算法来计算平均值,然后才能将数字平均化,但您似乎已经编写了代码来做到这一点。这表明您在写出代码应该做什么之前编写了代码。
-
@DavidSchwartz 实际上 OP 的错误是有趣的。在另一个 POV 中,
float avg = (first+second+third+fourth+fifth)/5;可以表示建立了一些并行代码,只要first, second ... or fifth发生变化,这些代码就会始终执行。这对 C 来说是错误的,但并不是那么难以想象。