C语言怎么判断我输入的5个字符中含有非数字字符?
for(i=0;i<5;i++)//从键盘读取5个数字{scanf("%d",&a[i]);}就是这样,如果我输入的5个值中有非数字字符,怎么才能判断出来,并且返回错误信...
for(i=0;i<5;i++)//从键盘读取5个数字
{
scanf("%d",&a[i]);
}
就是这样,如果我输入的5个值中有非数字字符,怎么才能判断出来,并且返回错误信息然后重新输入?
用if(a[i]<'0'||a[i]>'9')这个不好使,因为我不是一位一位输入的,我输入的数字可能是三位数、四位数等等。
请教各位,谢谢了。 展开
{
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;
}
#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;
}
展开全部
可以读入五个输入的字符,然后循环判断是否为数字。
如果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");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你输入的数字如果是三位数或者是四位数的话,那肯定是对的。你都scanf("%d",&a[i]);这样了,如果你输入1a3而不是123,那根本就读不进去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int k;
k = scanf("%d",&a[i]); 用scanf 返回值判断 是否成功读到数了。
if (k != 1) 读到非法数了。
k = scanf("%d",&a[i]); 用scanf 返回值判断 是否成功读到数了。
if (k != 1) 读到非法数了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Ctype.h 中有个isdigital(),余下的我就不多说了吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询