1468188287 发表于 2020-8-1 13:33:33

求助

求教这个程序为啥我分析着如果输入123abc应该只有1可以输出呀,为啥答案还是123?不是第一个1在输入进去后num就有了值,然后就退出循环了莫{:10_254:}

zltzlt 发表于 2020-8-1 13:41:33

当用户输入的不是数字(或输入换行),如果 num 已经有了值,才退出循环

my少年时代 发表于 2020-8-1 13:42:08

判断num是否有值是第二层逻辑判断,在这之前需要不满足ch在0——9之间(第一层if-else逻辑判断)
而ch直到a的时候才满足这一条件,因此会输出123

baige 发表于 2020-8-1 13:48:32

#include <stdio.h>

int main()
{
        char ch;
        int num = 0;
       
        printf("请输入待转换的字符串:");
       
        do
        {
                ch = getchar();
               
                if(ch >= '0' && ch <= '9')// 当输入123执行这一条语句
                {
                        num = 10 * num + (ch - '0');       
                }       
                else // 输入a执行这一条语句
                {
                        if(num) // 此时num=123
                        {
                                break;       
                        }       
                }
               
        }
        while(ch != '\n');
       
        printf("结果是:%d\n",num);
        return 0;
}
页: [1]
查看完整版本: 求助