解回文数中遇到的问题

问题遇到的现象和发生背景

题目:用户输入n,输出大于等于11小于等于n的所有回文数

问题相关代码,请勿粘贴截图
#include <iostream>
#include <math.h>

using namespace std;

//回文函数,将一个数字各个位都反过来,输出这个数字
int turn(int n) {
    int a[100], t = 0, k = n;
    do {
        a[t] = k % 10;
        k = k / 10;
        t++;
    } while (k != 0);
    int turn = 0;
    for (int i = 0; i < t; i++) {
        turn += a[i] * pow(10, t-i-1);
    }
    return turn;
}
//主函数
int main() {
    int n;
    cin >> n;
    for (int i = 11; i <= n; i++ ) {
        if (turn(i) == i) {
            cout << i << endl;
        }
    }
    return 0;
}
运行结果及报错内容

无报错,但是无法输出三位数和五位数的回文数

我的解答思路和尝试过的方法

有朋友给出代码如下

//回文函数,将一个数字各个位都反过来,输出这个数字
int turn(int n) {
    int a[100], t = 0, k = n;
    do {
        a[t] = k % 10;
        k = k / 10;
        t++;
    } while (k != 0);
    int turn = 0;
    for (int i = 0; i < t; i++) {
        turn = turn * 10 + a[i];
    }
    return turn;
}

因此推断可能是pow函数的问题

我想要达到的结果

求解输出错误的原因

不知道为啥,我在DEV-C++5.11 运行你i的代码没有问题。

img