#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int pre(int n);
main()
{
int i,j,k,l;
char n[1001],m[1001],s[1001];
int A,B,C;
scanf("%s",n);
for(i=0;i<10;i++)
{
A=atoi(n);
l=strlen(n)-1;
for(j=0;j<strlen(n);j++)
{
m[l]=n[j];
l--;
}
B=atoi(m);
C=A+B;
sprintf(s,"%d",C);
if(pre(C))
{
printf("%s + %s = %s\n",n,m,s);
printf("%s is a palindromic number.\n",s);
break;
}
else
{
printf("%s + %s = %s\n",n,m,s);
sprintf(n,"%d",C);//数字转字符串
}
}
if(i>=10)
printf("Not found in 10 iterations.\n");
}
int pre(int n)
{
int i,j=0,a[1001],flag=1;
if(n==0)
return 1;
else
while(n!=0)
{
a[j]=n%10;
n=n/10;
j++;
}
for(i=0;i<j/2;i++)
{
if(a[i]!=a[j-1])
{flag=0;
break;}
j--;
}
if(flag==1)
return 1;
else
return 0;
}
修改见注释,供参考:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int pre(int n);
int main()
{
int i, j, k, l;
char n[1001], m[1001], s[1001];
int A, B, C;
scanf("%s", n);
for (i = 0; i < 10; i++)
{
A = atoi(n);
l = strlen(n) - 1;
for (j = 0; j < strlen(n); j++)
{
m[l] = n[j];
l--;
}
m[strlen(n)] = '\0'; //修改
B = atoi(m);
C = A + B;
sprintf(s, "%d", C);
if (pre(C))
{
printf("%s + %s = %s\n", n, m, s);
printf("%s is a palindromic number.\n", s);
break;
}
else
{
printf("%s + %s = %s\n", n, m, s);
sprintf(n, "%d", C);//数字转字符串
}
}
if (i >= 10)
printf("Not found in 10 iterations.\n");
return 0;
}
int pre(int n)
{
int i, j = 0, a[1001], flag = 1;
if (n == 0)
return 1;
else
while (n != 0)
{
a[j] = n % 10;
n = n / 10;
j++;
}
for (i = 0; i < j / 2; i++)
{
if (a[i] != a[j - 1])
{
flag = 0;
break;
}
j--;
}
if (flag == 1)
return 1;
else
return 0;
}