沙包毛玉 发表于 2021-3-18 15:10:22

作业求助

S1E13的课后作业有个转换输出第一组数字 ,里面有一串代码是 num = num * 10 + (ch - '0') 想问一下这一串里面为啥num * 10大概啥意思,然后这串代码大概啥意思?
下附源代码

#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-3-18 15:18:52

假设第一次输入是1,第二次是2
那么字符“1”-“0”得到的就是这个数字字符在0~9中的排序1(不再是ASCII码值,而是数字)
第二次:
    1*10+(‘2’-‘0’),得到12,就是你输入12后想要的那个数值

沙包毛玉 发表于 2021-3-18 15:27:30

昨非 发表于 2021-3-18 15:18
假设第一次输入是1,第二次是2
那么字符“1”-“0”得到的就是这个数字字符在0~9中的排序1(不再是ASCII码 ...

好的 谢谢 完全理解了

jackz007 发表于 2021-3-18 15:35:08

本帖最后由 jackz007 于 2021-3-18 15:37 编辑

       考查这个代码
int i , num = 0       ;
char ch , s[] = '578' ;
for(i = 0 ; i < 3 ; i ++) {
      ch = s   ;
      num = num * 10 + (ch - '0')      
}
       for 循环将循环 3 次
【第1次】:num =0,ch = '5' ,num = num * 10 + (ch - '0') =0 * 10 + (53 - 48) = 5
【第2次】:num =5,ch = '7' ,num = num * 10 + (ch - '0') =5 * 10 + (55 - 48) = 57
【第2次】:num = 57,ch = '8' ,num = num * 10 + (ch - '0') = 57 * 10 + (56 - 48) = 578
【注】:'0' = 48
       '5' = 53
       '7' = 55
       '8' = 56
页: [1]
查看完整版本: 作业求助