C语言中如何判断一个数是不是整数
做了C语言的一道题,题目是这样的:一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照...
做了C语言的一道题,题目是这样的: 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。需要判断车号的平方根是不是整数,怎么判断呀。
展开
5个回答
展开全部
方法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”);
2013-08-15
展开全部
你直接用int型不就得了,这样是不会保留小数的...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
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;
}
#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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-15
展开全部
sqrt(a)==(int)sqrt(a)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询