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')这个不好使,因为我不是一位一位输入的,我输入的数字可能是三位数、四位数等等。
请教各位,谢谢了。
展开
 我来答
OliverXu
推荐于2017-10-07 · TA获得超过841个赞
知道小有建树答主
回答量:610
采纳率:0%
帮助的人:427万
展开全部
你的意思是你要连着输入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;
}
风若远去何人留
推荐于2017-09-24 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450133
专业C/C++软件开发

向TA提问 私信TA
展开全部

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

如果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");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
itlodge
2012-09-10 · TA获得超过103个赞
知道答主
回答量:163
采纳率:0%
帮助的人:111万
展开全部
你输入的数字如果是三位数或者是四位数的话,那肯定是对的。你都scanf("%d",&a[i]);这样了,如果你输入1a3而不是123,那根本就读不进去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2012-09-10 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5721万
展开全部
int k;
k = scanf("%d",&a[i]); 用scanf 返回值判断 是否成功读到数了。
if (k != 1) 读到非法数了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
121575024ll
2012-09-10 · TA获得超过172个赞
知道答主
回答量:110
采纳率:0%
帮助的人:44.2万
展开全部
Ctype.h 中有个isdigital(),余下的我就不多说了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式