原来我用比较中规中矩的方法
#include<stdio.h>
int isPalindromeNumber(int num)
{
	
	int arr[6] = { 0 };
	int tmp = num;
	int d = 1, j = 0;
    //求位数
	while (num / 10)
	{
		d++;
		num /= 10;
	}
    
    //把每位正序放到数组里
	for (j = d - 1 ; j >= 0; j--)
	{
		arr[j] = tmp % 10;
		tmp /= 10;
	}
    
    //遍历数组查询左右是否相等
	int* left = arr;
	int* right = arr + d - 1;
	while (left<right)
	{
		if (*left == *right)
		{
			left++;
			right--;
		}
		else
		{
			break;
		}
	}
    
    //>表示输入的数字位数为偶数时,left会大于right
	if (left >= right)
		return 1;
	else
		return 0;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		if (isPalindromeNumber(i))
			printf("%d\n", i);
	}

	return 0;
}