C语言怎么判断我输入的5个字符中含有非数字字符?

for(i=0;i<5;i++)//从键盘读取5个数字
{
scanf("%d",&a[i]);
}
就是这样,如果我输入的5个值中有非数字字符,怎么才能判断出来,并且返回错误信息然后重新输入?
用if(a[i]<'0'||a[i]>'9')这个不好使,因为我不是一位一位输入的,我输入的数字可能是三位数、四位数等等。
请教各位,谢谢了。

你的意思是你要连着输入5个字符,没有空格也没有换行?那你的输入方法用错了,因为%d的范围可以包括int类型的取之范围的,所以不管你输入多少位,系统永远认为你输入的是一个int,你可以用gets()呀,先获得连续的字符串,你就可以用a[i]<'0' || a[i]>'9'来判断了,当然a[i]的类型是char类型的,如果不确定是几位,你可以定义char a[100],到时候用strlen获得长度,a[strlen(a)] = '\0'就好啦 ,随便写个程序给你看看吧
#include <stdio.h>
#include <string.h>
int main()
{
char a[100];
int n = 0;
gets(a);
for(int i = 0; i < strlen(a); i++)
{
if(a[i] < '0' || a[i] > '9')
{
n++;
}
else
printf("%c", a[i]);
}
printf("\n%d\n", n);
getchar();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-24

可以读入五个输入的字符,然后循环判断是否为数字。

如果c是数字,那么必须满足 c>='0' && c <='9',反之则是不符合要求的。代码如下:

int c[5];
int i;
for(i = 0; i < 5; i ++)
    c[i] = getchar();//读入五个字符。
for(i = 0; i < 5; i ++)
    if(c[i]<'0' || c[i] >'9')break;//如果不符合,则退出循环。
if(i == 5) printf("全部为数字字符\n");//如i为5,则为正常退出,不是通过break退出的,说明全是数字字符。
else printf("存在不是数字字符的元素\n");

第2个回答  2012-09-10
你输入的数字如果是三位数或者是四位数的话,那肯定是对的。你都scanf("%d",&a[i]);这样了,如果你输入1a3而不是123,那根本就读不进去。
第3个回答  2012-09-10
int k;
k = scanf("%d",&a[i]); 用scanf 返回值判断 是否成功读到数了。
if (k != 1) 读到非法数了。
第4个回答  2012-09-10
Ctype.h 中有个isdigital(),余下的我就不多说了吧。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网