大神们,我看不懂这里面哪里体现出只打印第一组数字
#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;
} ch-'0'我也不懂,为什么不能直接写0呢 else控制只打印第一组数字。
比如你输入了asd123a123
进入循环后,前几次循环都是进入else,但是num为0,因此继续循环,读到123的时候,能正常进入if语句块,当getchar读到a的时候就无法进入if而进入了else,这是num已经不为0 了,然后就break跳出循环了
getchar读到的是字符,也就是ASCII码值,用ASCII码值减去'0'才能得到对应的数字,例如:ch是字符'3'的ASCII码值是51,'0'的ASCII码是48,ch-'0'得到的就是数字3了
页:
[1]