关于do while语句课后作业的问题
在S1E13的课后作业中动动手2:A. 将用户输入的字符串中代表数字的字符转换为整型数值 B. 打印转换结果 C. 只打印第一组数字
答案为
#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语句中 num = 10 * num + (ch - '0');这句怎么解释为什么这么做就把字符转换成了整型数值 举个例子:
如果我输入的是78
首先ch读到了7,但它是字符7,ASII码是55
num = 10 *num + (ch - '0')这句字符0的ASII码是48,55-48=7,num是0,所以num=7
首先ch读到了8,但它是字符8,ASII码是56
num = 10 *num + (ch - '0')这句字符0的ASII码是48,56-48=7,num是7,乘10是70,再加上8,所以num=78 临时号 发表于 2022-7-29 16:26
举个例子:
如果我输入的是78
首先ch读到了7,但它是字符7,ASII码是55
原来10*num是为了后面做准备的一下就明白了感谢
页:
[1]