有点难,但是有人能解决

if (i==(int)sqrt(i)*(int)sqrt(i))
为啥要加 (int)

因为sqrt 结果是 double

sqrt()函数的返回值是 double型

(int)强制类型转换,当等号两边类型不一致的时候,需要使用强制类型转换将右值数据类型转换为左值一致,否则编译器会报错.

int a =  129;
char b = 0;

b =  a;

如上的代码,一般编译器会报警告信息, 需要修改为b = (char) a;