源代码1#include<iostream>
int main()
{
using namespace std;
const int ax=5;
int bb[ax];
cout<<"请输入五次数字:\n";
for(int i=0;i<ax;i++)
{
cout<<"输入"<<i+1<<":";
while(!(cin>>bb[i])){
cin.clear();
while(cin.get()!='\n')
continue;
cout<<"请输入一个数字:";
}
}
return 0;
}
源代码2#include<iostream>
int main()
{
using namespace std;
const int ax=5;
int bb[ax];
cout<<"请输入五次数字:\n";
for(int i=0;i<ax;i++)
{
cout<<"输入"<<i+1<<":";
while(!(cin>>bb[i])){
cin.clear();
cout<<"请输入一个数字";
while(cin.get()!='\n')
continue;
}
}
return 0;
}
如果按照我的逻辑,源代码2应该是这样的,但两个源代码实现结果是一样的。
while(!(cin>>bb[i]))这里有一个输入,如果输入是字母,将执行cin.clear()重置错误输入,然后cout<<"请输入一个数字"显示字符串,再到while(cin.get()!='\n')输入。为何源代码1 while(cin.get()!=‘\n’)在这个语句cout<<"请输入一个数字"上面,按照我的逻辑代码这样的话应该先执行while(cin.get()!='\n')这个语句,输入,然后再到显示cout<<"请输入一个数字"这段代码才对啊!为何1和2源代码实现结果是一样的。 还有这个表达式cin.get()!=‘\n’,'\n'是不是代表着enter键,也就是说程序运行到这里我按下enter键,表达式cin.get()!='\n'应该等于0,所以while不执行,如果这样的话这条语句存在没有意义啊!但是我去掉这段代码之后实现结果不一样!