C语言中如何判断一个数是不是整数

做了C语言的一道题,题目是这样的: 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。需要判断车号的平方根是不是整数,怎么判断呀。

方法1:

#include<stdio.h>

#include<math.h>

float x;

...

if(fabs(x-(int)x)<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”);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-15
你直接用int型不就得了,这样是不会保留小数的...
第2个回答  2013-08-15
//结果是7744, 是88*88 = 7744先附上运行截图附上程序, 偶楼主你加了点注释#include <stdio.h>
#include <math.h>int main(void){
//首先因为是车牌号码, 类似0011这样的数字是可以出现的, 不能当作11
//所以用字符串代替最好不过了
int num[4], i, j;
bool SqrtIsIntNum(int n[4]);//判断平方根是不是整数的函数
//前两个数字和后两个数字一样, 所以用两个循环就OK
for (i = 0; i <= 9; ++i)
for (j = 0; j <= 9; ++j){
//条件之一: 前前两个数字相同, 后后两个数字相同
num[0] = i;
num[1] = i;
num[2] = j;
num[3] = j;
//条件之二: 这两个数字不等
//条件之三: 平方根是整数
if ((i != j) && SqrtIsIntNum(num) == true)
printf("%d%d%d%d\n", num[0], num[1], num[2], num[3]);
}
getchar();
return 0;
}bool SqrtIsIntNum(int n[4]){
double d = n[0] * 1000 + n[1] * 100 + n[2] * 10 + n[3];
//判断平方根是不是整数
if ((double)(int)sqrt(d) == sqrt(d))
return true;
else
return false;
}本回答被网友采纳
第3个回答  2013-08-15
sqrt(a)==(int)sqrt(a)
第4个回答  2021-12-07
#include<stdio.h>

int main()
{
for(int i=0;i<10;i++){
for (int j=0;j<10;j++){
int a=i*1000+i*100+j*10+j;
if(i!=j&&(int)sqrt(a)==sqrt(a)){
printf("%d\n",a);
}
}
}
return 0;
}
相似回答