什么方法可以定义整型变量,只能输入整数?

asyn_FL 2002-08-03 07:56:31
昨天写一个程序,定义了一个整型变量,要求输入的取值范围为0-6,可是当我输入-0.99~6.99中任何数字都行。
有没有什么方法避免以上现象?要求:只能输入整数,否则出现错误提示,更不能出现连负数都可以输入!
...全文
451 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
asyn_FL 2002-08-04
  • 打赏
  • 举报
回复
谢谢各位,问题基本解决!
不解 2002-08-03
  • 打赏
  • 举报
回复
只能通过自己编程,好象没有现成的函数之类的。
kwok_1980 2002-08-03
  • 打赏
  • 举报
回复
double b;
cin>>b;
if(b<0||b>6)//再加一个条件
cerr<<"Error! Input number is a negative one!"<<endl;
else
{
if((int)b!=b)
cerr<<"Error input!"<<endl;
else
cout<<"Correct input! Continue!"<<endl;
}
winco 2002-08-03
  • 打赏
  • 举报
回复
应该是这样:
double b;
cin>>b;
if(b<0)
cerr<<"Error! Input number is a negative one!"<<endl;
else
{
if((int)b!=b)
cerr<<"Error input!"<<endl;
else
cout<<"Correct input! Continue!"<<endl;
}
kwok_1980 2002-08-03
  • 打赏
  • 举报
回复
winco(老狼) 的方法不错呀!
winco 2002-08-03
  • 打赏
  • 举报
回复
double b;
cin>>b;
if((int)b!=b)
cerr<<"Error input!"<<endl;
else
cout<<"Correct input! Continue!"<<endl;
kwok_1980 2002-08-03
  • 打赏
  • 举报
回复
to: jiangpeng(jacky) 你看清题目了吗?

《《有没有什么方法避免以上现象?要求:只能输入整数,否则出现错误提示,更不能出现连负数都可以输入!》》
jp311 2002-08-03
  • 打赏
  • 举报
回复
可以先用atoi然后在判断取值范围吗,没什么必要在定义一个数组
kwok_1980 2002-08-03
  • 打赏
  • 举报
回复
没错,的确是麻烦了点,这是折中的方法!希望有更简便的方法!gz

to:jamesfangjing(Bayes) 你有没有看清题目的:??????

《《昨天写一个程序,定义了一个整型变量,要求输入的取值范围为0-6,可是当我输入-0.99~6.99中任何数字都行。》》

”强制转换“?????????????
kwok_1980 2002-08-03
  • 打赏
  • 举报
回复
没错,的确是麻烦了点,这是折中的方法!希望有更简便的方法!gz

to:jamesfangjing(Bayes) 你有没有看清题目的:??????

《《昨天写一个程序,定义了一个整型变量,要求输入的取值范围为0-6,可是当我输入-0.99~6.99中任何数字都行。》》

”强制转换“?????????????
jamesfangjing 2002-08-03
  • 打赏
  • 举报
回复
强制转换吧!
用kwok_1980(Mars)的方法,是不是太麻烦了!特别是数据很多的时候!
kwok_1980 2002-08-03
  • 打赏
  • 举报
回复
int a[6]={0,1,2,3,4,5,6};
int i;
int flag=0;
cin>>i;
for(int i=0;i<7;i++)
{
if(i==a[i]);
flag=1;
}

if(flag==0)
exit(-1)
else
//.................
kwok_1980 2002-08-03
  • 打赏
  • 举报
回复
同上

在想......................
SlaSk 2002-08-03
  • 打赏
  • 举报
回复
getchar()
atoi()
asyn_FL 2002-08-03
  • 打赏
  • 举报
回复
以上代码虽然不能区分象4和4.0这样的差别,但对于我的程序要求来讲已经够了。

  只是不知象while (b<0 || b>6 || (int)b!=b)这样的表达式执行效率如何?如果效率低下,有没有更好的表达式?

qibiluo 2002-08-03
  • 打赏
  • 举报
回复
使用getchar()后,在内部转换成int
asyn_FL 2002-08-03
  • 打赏
  • 举报
回复
根据winco(老狼)、kwok_1980(Mars) 两位的方法,
写了如下代码,还请各位指教!

double b;
cout<<"Enter a integer number(0-6):";
cin>>b;
while (b<0||b>6||(int)b!=b)
//判断输入的数字是否在0-6,且是否为整数!
{
cout<<"Error!Please input again!"<<endl;
cout<<"Enter a integer number(0-6):";
cin>>b;
};
cout<<"The number is:"<<b<<endl;//将正确输入的数字显示出来!


hslinux 2002-08-03
  • 打赏
  • 举报
回复
自己进行类型检查,不是整型的要求重新输入,或显示出错。
treamboy 2002-08-03
  • 打赏
  • 举报
回复
哦,,,看错了,,,
treamboy 2002-08-03
  • 打赏
  • 举报
回复
笨!!!!!!!来个强制转换,,,,,呵,,,再来个取余运算不就得啦。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧