折半判断,其中n<=9进行特判一下,奇数反转取一半儿多一位,偶数反转取一半儿,最后进行反转后的数字与未反转的两半儿进行比较。

#include<stdio.h>

int n;

int check(int x){
    if(x%10==0&&x!=0) return 0;
    if(x<=9) return 1;
    int revertedNumber = 0;
    while(x> revertedNumber){
        revertedNumber = revertedNumber*10 + x % 10;
        x = x / 10;
    }
    if(x==revertedNumber||x==revertedNumber/10)
        return 1;
    return 0;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        if(check(i)){
            printf("%d\n",i);
        }
    }
    return 0;
}