1215787625 发表于 2023-11-9 20:32:24

为什么该代码总要多输入一个数

#include<stdio.h>
int main()
{
        int n,a,b,sum;
        sum = 0;
        for(n=0;n<=3;n++){
                scanf("%d ",&a);
                b = a/3;
                sum += 50*b;
        }
        printf("%d",sum);
        return 0;
}

isdkz 发表于 2023-11-9 20:33:26

问题出在 scanf("%d ",&a) 这一行代码上。在格式字符串"%d "中,空格字符表示在输入中跳过任意数量的空格、制表符和换行符。因此,如果你在输入一个数后紧接着输入了一个空格字符,scanf函数会继续寻找下一个非空格字符作为输入。这就导致了你需要多输入一个数。

要解决这个问题,你可以将格式字符串改为"%d",去掉空格字符。这样,scanf函数就只会读取一个整数作为输入,而不会再继续寻找下一个非空格字符。

修改后的代码如下:

#include<stdio.h>
int main()
{
    int n, a, b, sum;
    sum = 0;
    for(n = 0; n <= 3; n++){
      scanf("%d", &a);
      b = a / 3;
      sum += 50 * b;
    }
    printf("%d", sum);
    return 0;
}


这样修改后,你只需要输入4个整数,而不需要输入多余的空格字符。

歌者文明清理员 发表于 2023-11-9 20:46:47

本帖最后由 歌者文明清理员 于 2023-11-9 20:47 编辑

#include<stdio.h>
int main()
{
      int n,a,b,sum;
      sum = 0;
      for(n=0;n<3;n++){   # n<3,不是n<=3
                scanf("%d ",&a);
                b = a/3;
                sum += 50*b;
      }
      printf("%d",sum);
      return 0;
}
页: [1]
查看完整版本: 为什么该代码总要多输入一个数