
C语言判断是否为整数,那么只可能是判断输入的值,或者字符串中的值,是否为整数。
因为一旦存储在变量中,根据变量类型,要么为整数,要么为浮点数,是确定的。
一、判断思路:
1、整数中,按十进制计算,合法字符为0到9,另外在最初位置可以有符号,即+或者-。
2、对于输入的值,可以先存储到字符串中,这样转换为判断字符串中是否为整数。
3、先判断第一个字符是否为+或者-, 如果是,则从第二个开始判断,否则从第一个开始判断。
4、对每一个需要判断的字符,判断是否在'0'到'9'之间,如果是则合法,否则非法。
5、一旦出现非法字符,说明不是整数。如果所有字符合法,那么是整数。
二、参考代码:
int is_int(char *s)//判断s中是否为整数,如果是返回1,否则返回0.{
char* p =s//p指向s。
if(*p=='+'||*p=='-')//如果第一个字符为符号,则从第二个开始遍历。
p++
while(*p)//遍历字符串。
{
if(*p<'0'||*p>'9') return 0//出现非法字符,返回0,表示不是整数。
p++//判断下一个字符。
}
return 1//所有都是合法字符,返回1,表示为整数
}
int main()
{
char s[200]
gets(s)//读取输入,存到s中。
if(is_int(s))//判断并输出结果
printf("%s 是整数\n", s)
else
printf("%s 不是整数\n",s)
return 0
}
## 方法1a=1234echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&echo string a is numbers
第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,如果非空,则结果为真。
sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要的内容:即后面的表达式所匹配的行,这是通过表达式中加入“p”命令来实现的。
/^[0-9][0-9]*$/他的含义是匹配至少由一位数字构成的行
## 方法2, 可以,不过不是bash实现的,是使用了grep的正则
#if grep '^[[:digit:]]*$' <<<"$1"then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法3
#if [ "$1" -gt 0 ] 2>/dev/null then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法4,case
#case "$1" in
# [1-9][0-9]*)
#echo "$1 is number."
#
# *)
#
#esac
## 方法5,awk
#echo $1| awk '{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'
## 方法5,awk
#if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ]then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法6,expr
expr $1 "+" 10 &>/dev/null
if [ $? -eq 0 ]then
echo "$1 is number"
else
echo "$1 not number"
fi
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)