诸葛·孔明 发表于 2017-8-12 09:51:13

+100能完全开方再+168能完全开方程序求助




#include<stdio.h>
#include<math.h>
void main()
{   int x;
    x=1;
        while(sqrt(x+100) == (int)sqrt(x+100) &&sqrt(x+268) == (int)sqrt(x+268))
        {
                x++;
   }
        printf("x=%d\n",x);

}这个代码有什么问题吗?我的结果是x=1,但是答案是21啊,求助求助,谢谢各位

九九八十一 发表于 2017-8-12 10:11:31

你写代码不自己弄点数据试一下吗?
第一个循环就退出来了,因为两个条件都是假,所以 x 就是 1
按你这个思路, 两个 == 应换成 !=

ba21 发表于 2017-8-12 10:22:03

本帖最后由 ba21 于 2017-8-12 10:35 编辑

这样可否



#include<stdio.h>
#include<math.h>
void main()
{   int x;
    x=1;
      while(1)
      {
                        if(sqrt(x+100) == (int)sqrt(x+100) &&sqrt(x+268) == (int)sqrt(x+268))
                {
                                break;
                }
                x++;
   }
      printf("x=%d\n",x);

}

诸葛·孔明 发表于 2017-8-12 12:01:59

九九八十一 发表于 2017-8-12 10:11
你写代码不自己弄点数据试一下吗?
第一个循环就退出来了,因为两个条件都是假,所以 x 就是 1
按你这个 ...

谢谢

诸葛·孔明 发表于 2017-8-12 12:02:53

ba21 发表于 2017-8-12 10:22
这样可否

谢谢
页: [1]
查看完整版本: +100能完全开方再+168能完全开方程序求助