c语言中如何判断输入的是否数字?

Python012

c语言中如何判断输入的是否数字?,第1张

这个程序不难写,我告诉你思路和算法,你根据这个编写代码就可以了。

1.由于你输入的这一串数据可能都为数字,也可能包含其它字符,所以首先用一字符数组存放这个字符串。

2.用strlen函数计算这个字符串的长度,在此基础上借助for循环或while循环实现数组元素的遍历。

3.遍历每一个元素的同时用if语句判断这个元素的ascii码所在的范围是否在48~57之间,如果不在则中止循环,输出判断结果(即不是数字)。

4.如果最后一个元素仍然是数字,则整个字符串则为一个大数。

由于数字的ascii码值是连续的,所以可以通过与最小的数字'0'以及最大的数字'9'相比较,确定一个字符变量是否为数字。

比如

if(c>='0' &&c<='9') printf("%c 是数字\n",c)

else printf("%c 不是数字\n",c)

如果判断要经常使用,可以将该功能封装为函数:

int is_num(char c)

{

return (c>='0' &&c<='9')

}

或者宏定义:

#define is_num(c) (c>='0' &&c<='9')

你写的这个有太多的错误。至于定义数组的时候a[N]这种错误我就不讲了

还有在循环里面(i=1i<Ni++)

N没赋值就调用的错误我也不讲了

讲你的死循环问题

你没有给循环加一个限制条件

根据你continue的意思我暂时理解为

如果输入的不是数字

那么一直循环

重新输入

一直到你输入的是数字为止跳出循环

对吗?

while(1){

printf("请输入要查的值\n")

ret=scanf("%d",&n)

printf("ret=%d\n",ret)

if(ret==0){

printf("输入错误,请重新输入\n")

continue

}

break

}

这样就可以

如果输入的是数字

scanf的返回值为1

那么循环的第一次

不会进入if(ret==0)

也就是说

如果输入的是数字

直接执行break跳出循环

如果输入的不是数字

循环的时候执行语句if(ret==0)

然后执行continue

continue的意思是跳出当前循环继续下一次循环

即执行到continue之后从新循环而不会执行到break

以此类推

只要你输入的不是数字

则永远循环

输入的如果是数字

跳出循环

执行完毕。

大哥

如果小弟回答正常

给点分吧

多谢

=================================================================

另外对于一楼的同学

我必须有好的提醒你scanf()的用法以及返回值的相关问题

我想你肯定不知道

scanf("%d",&i)

如果你输入的是int型则返回1

否则返回0

换句话说即你输入的类型和scanf()里面预先定义的类型一致

则返回1

否则返回0

THANK

YOU