在下面的代码中,我希望用户输入 10 个 float ,然后取它们的平均值。然而,在运行时,用户被强制输入 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]);
关于C: for 循环中的 Scanf 函数比它应该多运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063850/