刘汝佳的紫书P20的代码运行不了?

题目描述:
输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)。
代码我使用g++编译后没有输出,是我编译有问题还是代码本身有问题,代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
   for( int a = 1;  a <= 9; a++)
    for( int b = 0; b <= 9; b++)
    {
      int n = a * 1100 + b * 11;
      int m =floor(sqrt(n) + 0.5);
      if(m*n ==n) printf("%d\n", n);
    }
  return 0;
}

gcc编译则是这样

img

如果从你的编译提示信息来看,应该是floor()函数和sqrt()函数的头文件没有导入(我百度了一下,发现好像gcc不会自动自动链接math库,需要在gcc上加上编译参数:-lm);如果从代码的逻辑来看,可能在判断完全平方数哪里可能错了。下面是我的一个实现,不知道对不对,供参考:
参考链接:
undefined reference to 'floor'/undefined reference to `&_ssdsafsdsd的博客-CSDN博客

#include<stdio.h>
#include<math.h>
int main()
{
   for( int a = 1;  a <= 9; a++)
    for( int b = 0; b <= 9; b++)
    {
      int n = a * 1100 + b * 11;
//      int m =floor(sqrt(n) + 0.5);
//      if(m*n ==n) printf("%d\n", n);
        //判断当前aabb形式的四位数,是否是为完全平方数,简单的从31(1000的开平方约为整数)遍历到n的开平方 
        int s = (int)sqrt(n);
        if(s*s==n){
            printf("%d ",n);
        } 
    
//        for(int c=31;c<=(int)sqrt(n);c++){
//            if(c*c==n){
//                printf("%d ",n);
//                break;
//            }
//        }    
    }
  return 0;
}

img