| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
这道题的要求是 
基本要求: 
A. 将用户输入的字符串中代表数字的字符转换为整型数值 
B. 打印转换结果 
C. 只打印第一组数字 
提示:你可以使用 break 语句在适当的时候跳出循环。 
答案上的代码是: 
#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输入了一个值,然后在下面的if条件语句中 
判断的条件是ch >= '0' && ch <= '9',我不知道它判断的到底是ch大于等于0同时小于等于9,还是ch大于等于字符’0‘和字符’9’的ASCLL值,希望大佬们告诉我 
其次是不明白num=10*num+(ch-‘0’)的意思,为什么它能实现转变为整型数值,同时,其中的ch-'0"到底减的是0这个阿拉伯数字,还是字符‘0’对应的ASCLL值。
lipu 发表于 2021-3-27 09:12 
为什么不能写成ch>=0&&ch 
定义是整形,到你输入的是字符0~9啊 
值是其ASCII码  
 
 
 |   
 
 
 
 |