| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#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; 
} 
 
 
num = 10 * num + (ch - '0'); 
还有else if(num)是啥意思??? 
 本帖最后由 昨非 于 2021-1-19 21:05 编辑 
ch是读入的数字字符,ch-‘0’得到的就是数字(原理是相应的ASCII码相减) 
之所以要num = 10 * num + (ch - '0'); 
原因在于: 
  结果的num是数字(也就是int整型),比如第二位(十位)要乘以十再加上第一位数得到的两位数才是你想要的结果 
  前两位要乘以十加上第三位才是完整的三位数,后面的几位是一个道理 
至于: 
-                         if (num)
 
 -                         {
 
 -                                 break; // 如果已有数字,则退出循环
 
 -                         }
 
  复制代码 
这一语句块是在else里,也就是不满足“输入为数字字符”的前提条件 
如果输入非数字之前没有数字(num为0)那么就直接忽略(if不满足啥都不执行,读取下一位) 
如果前面已有数字,则if满足,跳出循环 
 
 
 |   
 
 
 
 |