C++语言怎么才能限定只输入整数数字呢?

#include<iostream>usingnamespacestd;intmain(){intnumber;cout<<"Enteranumber";cin>>num... #include <iostream>
using namespace std;

int main()
{
int number;
cout << "Enter a number ";
cin >> number;
if ((number%5!=0)&&(number%6!=0))
cout << number <<" is not divisible by either 5 or 6. " << endl;
else if ((number%5==0)&&(number%6==0))
cout << number <<" is divisible by both 5 and 6. " <<endl;
else
cout << number <<" is divisible by 5 or 6, but not both. " <<endl;
return 0;
}
展开
 我来答
appleyuchi
推荐于2018-02-11 · TA获得超过830个赞
知道答主
回答量:137
采纳率:100%
帮助的人:16.3万
展开全部
#include <iostream>
using namespace std;
int main()
{
int number,s;
char str[20];
cout<<"请输入一个整数噢亲~(淘宝小二语)~"<<endl;
cin>>number;
s=cin.rdstate();

while(s)
{ cin.clear();
cin>>str;
cout<<"抱歉噢亲,您的输入为非整数,请您重新输入╮(╯_╰)╭"<<endl;
cin>>number;
s=cin.rdstate();
}
cout<<"亲,您刚才成功地输入了一个整数噢:"<<number<<" O(∩_∩)O~"<<endl;
cout<<endl;

if ((number%5!=0)&&(number%6!=0))
cout << number <<" is not divisible by either 5 or 6. " << endl;
else if ((number%5==0)&&(number%6==0))
cout << number <<" is divisible by both 5 and 6. " <<endl;
else
cout << number <<" is divisible by 5 or 6, but not both. " <<endl;
cout<<endl;

cout<<"恭喜您亲,您的程序成功运行了噢~~~~"<<endl;

cin.get();//防止程序输出一闪而过
cin.get();//防止程序输出一闪而过
return 0;

}

改好了,也调试好了,只能限定整数输入,可以反复多次错误输入非整数,要不要选我最佳答案,自己凭良心吧,网友们都看着的。......
追问
Run-Time Check Failure #2 - Stack around the variable 'number' was corrupted.
Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted.
怎么我调试就出现这两个错误??
追答
你重新建个工程试试,我这边重新编译通过了,或者加qq753743312,在线谈
爱心永恒2008
推荐于2016-03-04 · TA获得超过1231个赞
知道小有建树答主
回答量:1314
采纳率:62%
帮助的人:322万
展开全部
整数数字就是char的取值范围是从'0'到'9',超出这个范围的取值自动被忽略,
自己写个函数,如下
char myInputInt()
{
char c;
BOOL bCon=TRUE;
while(bCon)
{
scanf("%d",&c);
if(c>='0' && c<='9')
{
bCon=FALSE;
return c;

}

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
靓丽还清湛的标兵5177
2012-02-05 · TA获得超过1649个赞
知道小有建树答主
回答量:1032
采纳率:100%
帮助的人:979万
展开全部
想要保证用户只能输入数字的话得自己写函数处理:
#include <io.h>
int getNumber()
{
int ret = 0;
char buf[32] = {0};
char c;
int i=0;
while((c=getch())!='\n')
{
if(i>=10&&c!='\b') continue;//输满10个数后只能接受回车或退格backspace
if(c>='0'&&c<='9') {putchar(c);buf[i++]=c;}//数字保存并回显
else if(c=='\b'&&i>0) {printf("\b \b"); buf[--i]='\0';}
}
sscanf(buf,"%d",&ret);
return ret;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尤里安龙卷风
2012-02-05 · TA获得超过190个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:89.5万
展开全部
你先用一个字符串来存,搜索看有没有不是数字的(比如英文啊,小数点啊,开头是0啊),有的话清空,提示重新输入。然后用sscanf()函数再读入到int里面...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式