fxj2002 发表于 2021-8-5 13:31:43

C语言s1E13动动手第2题疑问

#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;
}

大马强 发表于 2021-8-5 13:34:33

num = 10 * num + (ch - '0');
将输入的字符1~9,转化成整形

fxj2002 发表于 2021-8-5 13:36:59

这个是怎样化的,还是没听懂

大马强 发表于 2021-8-5 13:39:53

https://static01.imgkr.com/temp/5c66ba5ba001400eb890cfc62ce37516.png
用对应的ascii码来转换

大马强 发表于 2021-8-5 13:41:00

字符类型 0~9,有有对应的整形,你把它套入公式就好了

fxj2002 发表于 2021-8-5 13:43:47

那个10*num有什么用

大马强 发表于 2021-8-5 13:52:33

假设你输入的是123
num的变化为
0*10+1
1*10+2
12*10+3
=123
页: [1]
查看完整版本: C语言s1E13动动手第2题疑问