注册 登录
编程论坛 C语言论坛

定义数据类型问题

lwy2019 发布于 2019-10-16 10:36, 1706 次点击
#include<stdio.h>
#include<math.h>
void main()
{
    //一个整数, 它加上100后是一个完全平方数,
    //再加上168又是一个完全平方数, 请问该数是多少?
    int  i;
    double x, y;//问题在这里  用double 编译通过 答案不对 用 int 或者 long 都可以
// 求老师讲解  谢谢
    for ( i = 1; i < 10000; i++)
    {
        x = sqrt(i + 100);
        y = sqrt(i + 100 + 168);
        if (x*x == i + 100 && y*y == i + 268)
        {
            printf("%d\n", i);
        }
    }


    getchar();
}
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
3 回复
#2
rjsp2019-10-16 10:47
这是数学问题,
x=sqrt(i+100), 然后 if( x*x == i+100
当然有可能相等啦(之所以说“有可能”而不是“必然”,是因为 浮点数 不是 实时,只有有限精度)

随便举个例子吧,x = sqrt(108) = 10.3923…,然后 10.3923… * 10.3923… = 108 难道不是很正常?!

总之吧,你就不该用 sqrt
#3
lwy20192019-10-16 23:15
嗯  明白了 谢谢了 那这如果不用  sqrt函数 还可以用其他的什么函数
#4
宁缺T2019-10-19 21:04
你可以把x与(int)x相减,看结果是不是等于零就好了。
1