kangchu888 发表于 2018-8-9 16:17:41

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;
    }

无符号整形 发表于 2018-8-9 16:24:30

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]
查看完整版本: do while 课堂中的程序看不懂