可以这样操作:
int m = floor(sqrt(n) + 0.5); //对n开方并且四舍五入(floor()函数是向下取整)
if(m*m == n) printf("%d是整数", n);
其实我最起初的想法是这个
if(sqrt(n)==floor(sqrt(n))) printf("%d\n",n);
以及
int m = floor(sqrt(n));
if(m*m == n) printf("%d是整数", n);
这两个方法实质是一样的,在理论上都可行,但是在经过大量计算后,是会产生误差的,比如,整数1会变为0.999999999,如果直接采取向下取整,0.999999999就会变成0而不是1 .故采用四舍五入的方法来减小这种误差。