求解答
如果要开根号这样:
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需要你自己转