C语言 回文数 并打印出满足条件的回文数

问题遇到的现象

和发生背景 汽⻋的⾥程表显示6位整数的公⾥数。例如,⼩明的⻋有300000公⾥⾥程,则会看到
3-0-0-0-0-0。某天,⼩明发现⾥程数的最后4位数是回⽂。例如,5-4-4-5是⼀个
回⽂,所以⾥程表可能显示为3-1-5-4-4-5。1公⾥之后,后5位数组成⼀个回⽂。
例如,它可以是3-6-5-4-5-6。再过1公⾥,6位数的中间4位是⼀个回⽂。⼜过了1
公路,所有的6位数都成了回⽂。请问,第⼀次看⾥程表时,它的示数是多少?
• 编写程序,检查全部的6位数,逐⾏打印出可以满⾜上述要求的数字

操作环境、软件版本等信息

codebook20.03

尝试过的解决方法

可以30000内的回文数,但是不知道怎么联系起来

我想要达到的结果

希望可以逐⾏打印出可以满⾜上述要求的数字

供参考:

#include <stdio.h>
#include <stdlib.h>
int fun(int n)
{
    int k = n, m = 0;
    if (n <= 1000) return 0;
    while (k) {
        m = m * 10 + k % 10;
        k /= 10;
    }
    return m == n;
}
int main()
{
    int n, k, m, count = 0;
    int i = 0;
    int arr[30000] = { 0 }; //char arr[30000] = { 0 };
    scanf("%d", &k);
    for (n = k, k = (k / 100000 + 1) * 100000; n < k; n++)
    {
        if (fun(n % 10000) || fun(n % 100000) || fun((n / 10) % 10000) || fun(n))
            arr[i++] = n;
    }
    printf("i=%d\n", i);
    while (i--) {
        printf("%d\n", arr[i]);
    }
    return 0;
}