在下面的代码中,我希望用户输入10个浮点数,然后取其平均值。但是,在运行它时,用户被迫输入11个数字,但无论如何都会丢弃第11个数字。平均值实际上证明是正确的。我只是想知道为什么scanf似乎再运行1次。
我遇到的问题与建议的副本不同。在这里,问题与我对scanf函数的理解有关,我实际上循环了正确的次数。
请参阅:
#include <stdio.h>
int main (void)
{
int i;
float entry[10];
float total = 0.0;
printf("please enter 10 floating point numbers\n");
for (i = 0; i < 10; ++i)
scanf("%f\n", &entry[i]);
for (i = 0; i < 10; ++i) {
total = total + entry[i];
}
printf("The average of the 10 floating point numbers is: %f\n", total / 10);
return 0;
}
答案 0 :(得分:4)
格式字符串中的\n
导致了这一点。
即使输入了第10个元素,scanf
也会在完成之前等待输入非空白字符。输入10个数字后,您可以输入任何旧的非空白字符,让scanf
完成。
从格式字符串中删除\n
。你不需要它。使用
for (i = 0; i < 10; ++i)
scanf("%f", &entry[i]);
答案 1 :(得分:1)
删除\n
内的scanf
,即在第一个for
循环内,写一下:
scanf("%f",&entry[i]);