作业求助
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;
} 假设第一次输入是1,第二次是2
那么字符“1”-“0”得到的就是这个数字字符在0~9中的排序1(不再是ASCII码值,而是数字)
第二次:
1*10+(‘2’-‘0’),得到12,就是你输入12后想要的那个数值 昨非 发表于 2021-3-18 15:18
假设第一次输入是1,第二次是2
那么字符“1”-“0”得到的就是这个数字字符在0~9中的排序1(不再是ASCII码 ...
好的 谢谢 完全理解了 本帖最后由 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]