问题遇到的现象和发生背景
循环语句位置变化,所得的结果不同了 ;下面的程序是求输入一个浮点数,输出其小数的位数。
问题相关代码,请勿粘贴截图
程序1:
#include
#include
using namespace std;
int main()
{
char ch;
bool flag = false;
int num = 0;
while ((ch = getchar()) != '\n')
{
if (flag)
if (ch >= '0'&&ch <= '9')
num++;
else
{
num = 0;
break;
}
if (ch=='.')flag = true;
}
if (num > 0)
cout << num << endl;
else
cout << "输入不正确!" << endl;
return 0;
}
程序2:
#include
#include
using namespace std;
int main()
{
char ch;
bool flag = false;
int num = 0;
while ((ch = getchar()) != '\n')
{
if (ch == '.')flag = true;
if (flag)
if (ch >= '0'&&ch <= '9')
num++;
else
{
num = 0;
break;
}
}
if (num > 0)
cout << num << endl;
else
cout << "输入不正确!" << endl;
return 0;
}
运行结果及报错内容
程序1:
输入:1.6
输出:1
程序2:
输入:1.6
输出:输入不正确!
我的解答思路和尝试过的方法
这2个程序别的都是一样的,只是while循环里的语句 if (ch == '.')flag = true; 位置不一样。
我想要达到的结果
我认为2个程序结果应该是一样的