【问题标题】:Using while loop to count amount of inputs. C使用 while 循环计算输入量。 C
【发布时间】:2015-11-26 15:52:43
【问题描述】:

在我的程序开始时,我使用do-while 循环来计算用户输入了多少输入。 do-while 循环应在输入EOF (Ctrl+D) 后结束。 然而,我的问题是,当我输入 1 个值然后按 Ctrl+D 时,我的程序说它已经计算了两个输入,而我希望它只有一个。

#include <stdio.h>

main()
{
   int n=0;

printf("Enter values.\n");

do {
    n++;
   }
while (EOF!=scanf("%d",&n));


printf("%d\n",n);

}

如果我编译并运行程序,然后输入 1,然后按 Enter,然后输入 Ctrl+D,它会显示 n=2。为什么是这样?我只输入了 1 个值。

【问题讨论】:

  • 因为它是 do..while 循环。 n++ 将在读取 Ctrl+D 之前执行。最简单的解决方案,改为 while 循环

标签: c loops while-loop eof


【解决方案1】:
  1. n++ 被执行。 n 变为 1。
  2. scanf("%d",&amp;n) 被执行。输入 1 被读取。
  3. n++ 被执行。 n 变为 2。
  4. scanf("%d",&amp;n) 被执行。它返回 EOF 并从循环中中断。

结果,结果变成了2。我认为在这种情况下你应该while声明而不是do声明。另外,不要使用scanf() 破坏计数器。

#include <stdio.h>

int main(void)
{
   int n=0, m;

    printf("Enter values.\n");

    while (1==scanf("%d", &m))
    {
        n++;
    }

    printf("%d\n",n);

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多