Cehic 发表于 2020-10-15 16:05:27

求助


如图为一道课后题的题头,答案如下
#include <stdio.h>

int main()
{
      int 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;
}


疑问:
if中的10*num 如何理解

sunrise085 发表于 2020-10-15 16:37:02

就是将原有的数字右移一位
例如:输入的是123
第一次循环,ch为 ‘1’ ,进入if后,执行num=10*num +(ch-'0') 得到的是num=10*0+1=1
第二次循环,ch为 ‘2’ ,进入if后,执行num=10*num +(ch-'0') 得到的是num=10*1+2=12
第三次循环,ch为 ‘3’ ,进入if后,执行num=10*num +(ch-'0') 得到的是num=10*12+3=123
页: [1]
查看完整版本: 求助