Leven 发表于 2018-2-28 08:33:51

S1E13中的动动手2练习题 新人求助

#include <stdio.h>

int main()
{
      char ch;
      int num = 0;

      printf("请输入待转换的字符串:");

      do
      {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        num = 10 * num + (ch - '0');
                }
                else
                {
                        if (num)
                        {
                              break; // 如果已有数字,则退出循环
                        }
                }

      }
      while (ch != '\n');

      printf("结果是:%d\n", num);

      return 0;
}
为什么程序中的num = num * 10 + (ch - ‘0’)这句为什么要这么写啊?num = 0,为什么不直接num = ch?
另外,为什么ch = getchar()能直接输入而不通过scanf?

BngThea 发表于 2018-2-28 08:55:41

因为ch是char,而num是int,用ch-‘0’得到的才是数字0~9
getchar是单独获取一个字符,当然也可以用scanf

Leven 发表于 2018-2-28 09:18:30

BngThea 发表于 2018-2-28 08:55
因为ch是char,而num是int,用ch-‘0’得到的才是数字0~9
getchar是单独获取一个字符,当然也可以用scanf

putchar()才是吧,getchar()不是只代表一个回车符号?

BngThea 发表于 2018-2-28 09:23:08

Leven 发表于 2018-2-28 09:18
putchar()才是吧,getchar()不是只代表一个回车符号?

getchar是从输入流中获取一个字符
putchar是将一个字符打印出来

Leven 发表于 2018-2-28 09:26:26

BngThea 发表于 2018-2-28 09:23
getchar是从输入流中获取一个字符
putchar是将一个字符打印出来

好的,我再去看看getchar()和putchar()的用法,谢谢{:10_291:}
页: [1]
查看完整版本: S1E13中的动动手2练习题 新人求助