永发信息网

如何判断由键盘输入的数据类型

答案:1  悬赏:80  手机版
解决时间 2021-06-04 22:19
下面是一段很简单的代码,目的是求得所有输入的整数的平均值。但是我的问题不在这里,大家可以发现这段代码有很大的bug,当我输入的变量不是一个整数而是属于浮点数或者字符的话,程序就会崩溃。请教:如何判断由键盘输入的数据类型,来避免这种情况?有没有什么特定的函数,类似于VB里面的IsNumeric函数可以直接判断输入的是否是数字?
#include<iostream>
using namespace std;
int running_avg(int i);
int main()
{
int num;
do{
cout<<"enter numbers(-1 to quit):";
cin>>num;
if(num!=-1)
cout<<"running average is:"<<running_avg(num);
cout<<'\n';
}while(num>-1);
return 0;
}
int running_avg(int i)
{
static int sum=0,count=0;
sum+=i;
count++;
return sum/count;
}
最佳答案

对于你这个题目来说因为输入 只是 0到9 和 回车 那么如果输入其他字符可以当作无效就行了


0到9对应的ASC码是48到57 回车对应的ASC码是 13 那么我们可以编写程序如下。


#include<stdio.h>
void main()
{char Indata;
int num;
num=0;
while(1)
{
Indata=getch();
if (Indata>47&&Indata<58)
{
printf("%c",Indata);
num=num*10+Indata-48;
}
if (Indata==13) break;
}
printf("result:num=%d",num);
getch();
}
本程序为TC2.0编译环境,以上只是算法。该如何加入你的程序你自己的想吧,我只能帮到这。


即使这样也只能是判断出来输入的是整数,而无法判断大小 比如说整形最大能到65535 如果输入超过这个


限制,程序还是出错的。该如何判断大小是另外的话题了。另外我的程序里缺了个负号,因为整数也包括负整数,你可以自己加进去。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
windows xp开机进入桌面后死机,画面定格。重
为什么下下来的地下城下载包点了没反应?
梦幻诛仙新手卡奖励去哪个NPC领取
登录qq时从哪里设置显示上次登录归属地?
DNF中的玩机械好还是漫游好?我想搞漫游但很
中国银行的网上银行怎么开?
怎么让自己快乐`怎么才可以天天开心?
龙凤区大庆银座尚品购物中心地址在哪,我要去
求一个金山毒霸2009版的通行证.
三国中周瑜是怎么死的?
谁给我介绍一下鬼剑士1到18级的技能输出型加
这短时间怎么建不了群呢?老是提示系统繁忙!
那位老师给说五个 表示肯定意思的两字词语
手机怎样绑定QQ号?
兰考县开封中国农业银行(兰考东方医院东)地址
推荐资讯
怎样将祖玛游戏桌面最大化
大话2中,怎么把单身庭院转成双人庭院,转成双
我今年高二了,可却什么都不顺利…
真正的友情是什么?
手机Java系统有什么功能?
qq靓号免费申请是什么意思啊?
大家来看看这个帅哥是谁?快点帮忙啊
一个正数X的平方根是m+1与m-4071求m的值
现在专业象棋比赛职行那个版本的棋规
绿色手机的图标怎么点亮?
黑莓8700电池可以用多久
瓜熟蒂落,谁知道下一句
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?