回 帖 发 新 帖 刷新版面

主题:c问题

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
      的结果满足如下条件,即是结果。请看具体分析:
2.程序源代码:
#include "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
 { x=sqrt(i+100);   /*x为加上100后开方后的结果*/
  y=sqrt(i+268);   /*y为再加上168后开方后的结果*/
   if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
    printf("\n%ld\n",i);
 }
}



为什么运行后什么都输出?

回复列表 (共4个回复)

沙发

最好加个头文件,你的程序我运行的结果是正确的,不过最好加一个转换类型命令
#include<stdio.h>
#include "math.h"
main()
{
int i,x,y,z;
for (i=1;i<100000;i++)

    x=(int)sqrt(i+100); /* x为加上100后开方后的结果*/
    y=(int)sqrt(i+268); /*y为再加上168后开方后的结果*/
    if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
    printf("\n%ld\n",i);
}
}

板凳

判断是否是完全平方数,最好用

if (x - (int)x == 0 && y - (int)y == 0)

3 楼

[quote]判断是否是完全平方数,最好用

if (x - (int)x == 0 && y - (int)y == 0)[/quote]
首先,lz的程序都是long,long强转int还是int
其次,就算x是浮点型,那由于计算误差,也不应该直接判断==0

4 楼

不明白为什么要定义z变量,也不写返回值!sqrt()的变量好像是double类型的吧(具体不记得了)
都是long类型的,直接转换回来就可以了!
#include<stdio.h>
#include "math.h"
main()
{
int i,x,y;
for (i=1;i<100000;i++)

    x=(long)sqrt(i+100); /* x为加上100后开方后的结果*/
    y=(long)sqrt(i+268); /*y为再加上168后开方后的结果*/
    if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
    printf("\n%ld\n",i);
}
return 0;
}


至于2楼的说法,我也不赞同的!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册