大家给个方法,咋判断输入的是否为数字,是数字的话执行,不是的话跳出循环
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时,返回非零值,否则返回零。
[其他解释]
输入的是一个float型的数字啊
[其他解释]
大家说说EOF这个杂用啊?
[其他解释]
如果用EOF来判断输入结束的话,那么我上面的\0可以修改为-1,因为eof的值是-1
[其他解释]
代码是这样的,看一下咋实现输入不是数字时跳出循环
#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;
}