甲鱼煲汤我最爱 发表于 2021-3-5 14:32:12

小白求助

#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;
}请问那个else那个“块”是什么意思没明白{:10_254:}

jackz007 发表于 2021-3-5 15:54:26

本帖最后由 jackz007 于 2021-3-5 16:08 编辑

       假如键盘输入为 "139abc" ,那么,在前三次循环中, ch 的值分别为 '1'、'3'、'9'
               if (ch >= '0' && ch <= '9')
       条件均成立,于是,num 的值依次分别为 1、13、139。
       到了第四次循环, ch = 'a' 的时候
               if (ch >= '0' && ch <= '9')
       条件不再成立,于是,进入 else 语句块,这时,num = 139
                     if (num)
       条件成立(此条件只要 num 的值不为 0 就成立,num = 139,显然成立),于是,执行 break,中断 while 循环,num = 139

       如果键入的是 "abc139",那么,在前三次循环中, ch 的值分别为 'a'、'b'、'c'
               if (ch >= '0' && ch <= '9')
       条件均不成立,于是,均进入 else 语句块,num 的值始终为 0
                     if (num)
       条件均不成立,继续循环,读取键盘输入
       从第四次循环开始, ch 的值分别为 '1'、'3'、'9'
               if (ch >= '0' && ch <= '9')
       条件均成立,于是,num 的值依次分别为 1、13、139。
       到了第7次循环),ch = '\n'
               if (ch >= '0' && ch <= '9')
       条件不再成立,于是,进入 else 语句块,这时,num = 139
                     if (num)
       条件已经成立,于是,break 退出 while 循环

甲鱼煲汤我最爱 发表于 2021-3-5 15:46:08

还有就是那个break后的如果已有数字。。。。。。是什么意思{:10_284:}

甲鱼煲汤我最爱 发表于 2021-3-5 17:12:29

jackz007 发表于 2021-3-5 15:54
假如键盘输入为 "139abc" ,那么,在前三次循环中, ch 的值分别为 '1'、'3'、'9'

       条件 ...

谢谢大佬懂了
页: [1]
查看完整版本: 小白求助