C:for循环中的Scanf函数再运行一次

时间:2016-05-06 03:44:08

标签: c for-loop scanf

在下面的代码中,我希望用户输入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;
}

2 个答案:

答案 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]);