C语言构造回文数 有偿 求指导

img

img


c语言 构造回文数,求个来教教这个代码,完全没思路.求指导一下.

这是一个题吧?就是将整数倒置,然后相加,判断是否回文,不是再倒置呗。10次还不是回文就报错

#include <stdio.h>
#include <string.h>
void r(char *a,int n,char *b)
{
    for(int i=0;i<n;i++)
        b[n-i-1] = a[i];
}

void add(char *a,int n,char *b)
{
    int m = 0,a0,b0,c,j;
    for(int i=n-1;i>=0;i--)
    {
        a0 = a[i] - '0';
        b0 = b[i] - '0';
        c = a0+b0;
        a[i] = c%10 + '0';
        if(c/10 > 0)
        {
            if(i==0)
            {
                m=1;
                break;
            }
            for(j=i-1;j>=0;j--)
            {
                if(a[j] == '9')
                {
                    a[j] = '0';
                    if(j==0)
                    {
                        m=1;
                        break;
                    }
                }
                else
                {
                    a[j] += 1;
                    break;
                }
            }
        }
    }
    if(m==1)
    {
        for(j=n;j>0;j--)
            a[j] = a[j-1];
        a[0] = '1';
    }
}

int main()
{
    char a[1002]={0}, b[1002] = {0};
    int i;
    gets(a);
    for(i=0;i<10;i++)
    {
        int len = strlen(a);
        r(a,len,b);
        if(strcmp(a,b) == 0)
            break;
        printf("%s + %s = ",a,b);
        add(a,len,b);
        printf("%s\n",a);
    }
    if(i==10)
        printf("Not Found in 10 iteration.");
    else
        printf("%s is a palindromic number.",a);
    return 0;
}