作者yantchen (球童Yanting)
看板NTUE-CS101
标题[课业] C++只能输入正整数的方法 ( 仅供参考 )
时间Sun Jan 11 01:50:05 2009
刚有人问我输入小数等错误的情况
之前讲的cin.fail()只能判断部份情况
cin把float丢给int的时候会舍去小数 而且cin.fail()查不到 丢了之後就死无对证了
所以解决方法之一是先用float存 然後判断 f-(int)f==0 true 的话就是整数
这个可以写成一个函数
写成函数
把原来的 cin>>a; 改成 a=input_unsigned_int(); 这样就不会出错了
这个仅供参考 老师验程式的时候先验程式有没有正常跑 输入错误的情况有判断只当加分
int input_unsigned_int(){
float tmp;
int a;
bool err;
char trush[1024];
do{
err=false;
cin>>tmp;
if(cin.fail())
{
cin.clear();
cin>>trush;
err=true;
cout<<"输入了非数字\n请重新输入一个正整数";
}
else if(tmp-(int)tmp!=0)
{
err=true;
cout<<"输入了小数\n请重新输入一个正整数";
}
else if(tmp<0)
{
err=true;
cout<<"输入负数\n请重新输入一个正整数";
}
} while(err);
a=(int)tmp;
return a;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.178.168
※ 编辑: yantchen 来自: 118.169.178.168 (01/11 02:17)
1F:推 snoopyuj:谢谢学长啦! 哈哈~ 01/11 14:36