方法1:
成都创新互联基于分布式IDC数据中心构建的平台为众多户提供成都棕树电信机房 四川大带宽租用 成都机柜租用 成都服务器租用。
#includelt;stdio.hgt;
#includelt;math.hgt;
float x;
...
if(fabs(x-(int)x)lt;1e-8)printf(“x是一个整数\n”);
else printf(“x不是一个整数\n”);
方法2:
int c=(int)b,d=(int)(b+0.999999)
if(c==d)
printf(“是整数\n”);
else
printf(“不是整数\n”);
方法3:
float b;
...
if(b-(int)b==0)
printf(“是整数\n”);
else
printf(“不是整数\n”);
方法4:
float b;
...
if(b!=(int)b)
printf(“不是整数\n”);
else
printf(“是整数\n”);
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;
}
float
x;
int
y;
scnaf("%f",x);
y=x;
if
(
y==x
)
printf("%d是整数。\n",(int)x);
else
printf("%f不是整数。\n",x);
当然也可以用简单的条件判断:if
(
(int)x==x
)
...
你的输入是什么?
这个程序要求输入三个整数,如果输入的不是整数,那么这些非整数的输入会遗留在输入缓冲区中,而在scanf()读取时会先检查缓冲区是否为空,如果不空就不会等待键盘输入,会尝试从缓冲区中读取并转换,但是这些非整数的输入又无法转换,所以isnum的值小于3,这就会导致程序一直循环下去,直到for条件不满足而退出。