查看原题目请点我
解题思路:本题属于字符串的处理,主要是反转和大数相加的过程,如果会STL标准库就更简单了。

#include<cstdio>
#include<cstring>
const int maxn = 1010;
char str1[maxn],str2[maxn],str3[maxn],str[maxn],rev[maxn];
void reverse(char s[]){
    int len=strlen(s);
    for(int i=0;i<len/2;i++){
        int tmp=s[i];
            s[i]=s[len-1-i];
            s[len-1-i]=tmp;
    }
}
void copy(char a[],char b[]){
    int len =strlen(b);
    for(int i=0;i<len;i++){
        a[i]=b[i];
    }
}
int is_symmetry(char s[]){
    int len=strlen(s);
    for(int i=0;i<len/2;i++){
        if(s[i]!=s[len-1-i])
            return 0;
    }
    return 1;
}
void add(char a[]){
    int c=0,k=0;
    int len = strlen(a);
    memset(str,0,sizeof(str));
    for(int i=0;i<len;i++){
        str[k++]=(a[i]-'0'+a[len-1-i]-'0'+c)%10 + '0';
        c=(a[i]-'0'+a[len-i-1]-'0'+c)/10;
    }
    if(c!=0) str[k]='1';
    reverse(str);
}
int main(){
    int count=0;
    scanf("%s",str1);
    while(count<10){
        copy(str2,str1);
        reverse(str1);
        add(str1);
        copy(str3,str);

        if(strcmp(str1,str2)==0) {
            printf("%s is a palindromic number.\n",str1);
            break;
        }
        else{
            printf("%s + %s = %s\n",str2,str1,str3);
            count++;
            copy(str1,str3);
            memset(str2,0,sizeof(str2));
            memset(str3,0,sizeof(str3));
        }
    }
    if(count==10) printf("Not found in 10 iterations.\n");

    return 0;
}