求助
如图为一道课后题的题头,答案如下
#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 如何理解 就是将原有的数字右移一位
例如:输入的是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]