[英]C: Scanf function in for loops runs one more time than it should
在下面的代码中,我希望用户输入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;
}
格式字符串中的\\n
导致了这种情况。
即使输入了第10个元素, scanf
也会在完成输入之前等待输入非空白字符。 输入10个数字后,您可以输入任何旧的非空白字符以使scanf
完成。
从格式字符串中删除\\n
。 不用了 采用
for (i = 0; i < 10; ++i)
scanf("%f", &entry[i]);
删除scanf
内的\\n
,即在第一个for
循环内,写:
scanf("%f",&entry[i]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.