|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
这个作业中,因为有break的存在,所以按理说应该是输入一组数字之后再输入一个字母就立刻跳出循环,然后打印结果,为什么编译运行出来以后,怎么输入都不会触发break,,,,
想了一下午,怎么也想不通,求高人指点一下,是不是我哪里逻辑错误了。。。。。
触发了,我用你程序调试了一下
首先输入 44+回车 ,由于是getchar()所以会一个一个读取,顺序为 '4' - '4'- '\n' 最后的一个是你敲击的回车,对照ascii表回车对应的是 整数10,条件的判断为 ch >= '0' && ch <= '9',对应着 ch >= 48 && ch <= 57,判断不成立,执行else语句,由于前面的 num 被赋值过了,break语句会被执行
|
|