原来我用比较中规中矩的方法
#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; }