求解答真的是想不明白啊,不知道错在哪里

求解答

img


实在不知道错哪了不太清楚开根号的用法求个位朋友们解答一下谢谢啦

如果要开根号这样:
int s;
s=sqrt(sum);//因为int类型会省略小数(不是四舍五入)
if (s*s=sum)//如果开完根号再平方等于它本身,就说明是平方
{
...//其他语句
}
望采纳

sqrt(sum) %1 == 0:
改成
sqrt(sum) %1 == 0.0:

sqrt(sum) 换成 pow(sum, 0.5)

sqrt(sum)得到一个实数值,而实数不能取余运算,所以这里修改为:if ((int)sqrt(sum) % 1 == 0) , 然后 任何整数 % 1 == 0 这个条件恒成立,% 1 没什么意义。代码修改如下,供参考:

#include <stdio.h>
#include <math.h>
int main()
{
    int a,b;
    double sum;
    for (a=0;a<=9;a++)
         for (b=0;b<=9;b++)
              if (a!=b){
                  sum=a*1000+a*100+b*10+b;
                  if((int)sqrt(sum)%1==0)
                      printf("%f\n",sum);
              }
    return 0;
}

C语言的sqrt()函数只能求解常数的算术平方根,C库里似乎没有可以求变量的C函数(如果哪位朋友知道,麻烦指正),求算术平方根,要么上网搜别人写好的代码,要么自己写,可以利用二分法写求开n次方的函数(之后有时间我会去编写,目前实在没有时间,抱歉,还无法解决你的实际问题)

1.两个#include指令分行写
2.main函数给个返回类型,int、void都行
也就是main()改成void/int main()
3.sqrt返回值强制转换成int类型再进行模运算
也就是sqrt.....改成(int)sqrt.....

1、引用include要换行, 一行写一个
2、sqrt 默认是float、double,要转成int需要你自己转