下面是一段很简单的代码,目的是求得所有输入的整数的平均值。但是我的问题不在这里,大家可以发现这段代码有很大的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;
}
如何判断由键盘输入的数据类型
答案:1 悬赏:80 手机版
解决时间 2021-06-04 22:19
- 提问者网友:星軌
- 2021-06-04 00:50
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-06-04 00:57
对于你这个题目来说因为输入 只是 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 如果输入超过这个
限制,程序还是出错的。该如何判断大小是另外的话题了。另外我的程序里缺了个负号,因为整数也包括负整数,你可以自己加进去。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯