do while 课堂中的程序看不懂
num = 10 * num + (ch - '0');这个语句看不懂, 为什么要10*num?
还有我如果输入abc123, num怎么会得到123, 按我理解应该是得到3,前面的数字应该被刷新掉的?
-------------------------------------------------
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.num = 10 * num + (ch - '0');
因为num是得到输入的每一位,所以要乘以十才能变成数字。
2.因为你输入abc123,第一个if不成立进入else,num=0,继续循环
再次循环,第一个if不成立进入else,num=0,继续循环
再次循环,第一个if不成立进入else,num=0,继续循环,
再次循环,第一个if成立进入num=1
……
页:
[1]