【问题标题】:Why is scanf being performed 11 times?为什么 scanf 被执行了 11 次?
【发布时间】:2018-10-30 11:28:37
【问题描述】:
#include <stdio.h>

int main(void) 
{
    int marks[10];
    int i;

    for (i=0; i < 10; i++)
    {
        scanf("%d ", &marks[i]);
    }

    printf("\n");

    for (i=0; i <= 9; i++)
    {
        printf("%d\n", marks[i]);
    }

    return 0;
}

显然,第一个循环条件应该只运行 10 次,但它要求我输入第 11 个值。有人知道吗?或者它只是 C 的许多奇怪行为之一?

在第二个循环中,它按我想要的方式工作!

【问题讨论】:

  • 删除多余的空间:scanf("%d ") ==> scanf("%d")
  • 不要发布代码图片。只需将代码复制到问题中即可。
  • 好吧,其实这是我第一次在stackoverflow发帖,请见谅。

标签: c scanf


【解决方案1】:

在这种情况下,%d 之后的空格是格式说明符,因此它需要 2 个参数,空格作为分隔符。

scanf("%d %d", &marks[i], &marks[i+1]); => 1 2
scanf("%d ", &marks[i]); => 1 2
scanf("%d", &marks[i]);  => 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多