16beat 发表于 2021-6-18 23:17:57

新手求助

S1E14 动动手第1中,scanf函数会返回成功接收字符的个数,所以我们只需检查每次调用 scanf 函数的返回值是否为 1 即可,为什么输入字母就会结束,数字为1个字符,字母不也是1个字符么?
#include <stdio.h>

int main()
{
      int num = 0;
      long sum = 0L; // 0L表示类型为long的0
      int status;

      do
      {
                printf("请输入合法的数字:");
                sum = sum + num;
                status = scanf("%d", &num);
      } while(status == 1);

      printf("结果是:%ld\n", sum);

      return 0;
}

尛善领主 发表于 2021-6-18 23:22:23

%d只接收整数

%c是接收单个字符
%s是接收字符串

万千只cnm 发表于 2021-6-18 23:48:29

字母不是整型呀(%d)
scanf返回 成功输入的个数
自然是0了
另外 ‘1‘ 和1 也不一样

16beat 发表于 2021-6-18 23:55:05

尛善领主 发表于 2021-6-18 23:22
%d只接收整数

%c是接收单个字符


懂了,多谢

16beat 发表于 2021-6-18 23:55:38

万千只cnm 发表于 2021-6-18 23:48
字母不是整型呀(%d)
scanf返回 成功输入的个数
自然是0了


懂了,多谢
页: [1]
查看完整版本: 新手求助