读书人

大家伙儿给个方法咋判断输入的是否为

发布时间: 2012-12-18 12:43:41 作者: rapoo

大家给个方法,咋判断输入的是否为数字,是数字的话执行,不是的话跳出循环
while(1)
{
//用scanf接收一个信号,如果是数字,调用一个子函数,如果不是,则跳出while循环

}
[最优解释]
用isdigit()
原型:extern int isdigit(char c);
  用法:#include <ctype.h>
  功能:判断字符c是否为数字
  说明:当c为数字0-9时,返回非零值,否则返回零。
[其他解释]
接受一个信号是什么意思?那我可以自认为是字符串吗?如果这样的话你可以这样做:
先要判断第一个位,因为有可能是+或者-,就是说如果第一个不是数字(用ls的方法判断字符是否是数字)也不是符号位,那么可以返回false了;
然后指针依次后移,如果遇到一个非数字,判断他是不是小数点或者分号等可以出现在数字中的符号,那么这个符号只可以出现一次,不可能有两个小数点的数字;
然后依次到最后一个字符\0,如果没有非法字符,那么返回true。
[其他解释]
撞车了
[其他解释]
isdigit
  原型:extern int isdigit(char c);
  用法:#include <ctype.h>
  功能:判断字符c是否为数字
  说明:当c为数字0-9时,返回非零值,否则返回零。
[其他解释]

引用:
用isdigit()
原型:extern int isdigit(char c);
  用法:#include <ctype.h>
  功能:判断字符c是否为数字
  说明:当c为数字0-9时,返回非零值,否则返回零。

输入的是一个float型的数字啊
[其他解释]
大家说说EOF这个杂用啊?

[其他解释]
引用:
大家说说EOF这个杂用啊?

如果用EOF来判断输入结束的话,那么我上面的\0可以修改为-1,因为eof的值是-1
[其他解释]
引用:
接受一个信号是什么意思?那我可以自认为是字符串吗?如果这样的话你可以这样做:
先要判断第一个位,因为有可能是+或者-,就是说如果第一个不是数字(用ls的方法判断字符是否是数字)也不是符号位,那么可以返回false了;
然后指针依次后移,如果遇到一个非数字,判断他是不是小数点或者分号等可以出现在数字中的符号,那么这个符号只可以出现一次,不可能有两个小数点的数字;
然后依次到最后一个字符\0,如……

代码是这样的,看一下咋实现输入不是数字时跳出循环
#include<stdio.h>
int main(void)
{
float a;
while(1)
if(scanf("%f",&a),a!= EOF)
return 0;
else
printf("%f\n",a);

return 0;
}
[其他解释]
本贴问题已经解决,谢谢大家的踊跃发言,给大家晒一下解决的办法
#include<stdio.h>
int main(void)
{
float a;
while(1)
if(scanf("%f",&a)== 0)/*当输入的为数字时,程序会跳到else,反之,则结束程序*/
return 0;
else
printf("%f\n",a);

return 0;
}

读书人网 >C语言

热点推荐