|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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满足,跳出循环
|
|