代码实现:
#include<stdio.h>
#include<string.h>
#define X 1010
void summation(char *num1, char *num2)
{
int len1 = strlen(num1), len2 = strlen(num2), len = X - 1;
char result[X] = { 0 };
for (int i = 0; i < len; i++)
{
int n1 = (i < len1 ? num1[len1 - i - 1] - '0' : 0);
int n2 = (i < len2 ? num2[len2 - i - 1] - '0' : 0);
int n = n1 + n2;
result[len - i - 1] += n;
result[len - i - 2] += result[len - i - 1] / 10;
result[len - i - 1] %= 10;
}
for (int i = 0; i < len; i++)
result[i] += '0';
for(int i=0;i<len;i++)
if (result[i] != 0 && result[i] != '0')
{
strcpy(num1, result + i);
break;
}
}
int isPalindromic(char *num)
{
int len = strlen(num);
for (int i = 0, j = len - 1; i <= j; i++, j--)
if (num[i] != num[j])
return 0;
return 1;
}
int main()
{
char num[X];
int cnt = 0;
gets(num);
while (isPalindromic(num) == 0 && cnt < 10)
{
char num2[X];
for (int i = strlen(num) - 1; i >= 0; i--)
num2[strlen(num) - 1 - i] = num[i];
num2[strlen(num)] = 0;
printf("%s + %s = ", num, num2);
summation(num, num2);
puts(num);
cnt++;
}
if (cnt < 10)
printf("%s is a palindromic number.", num);
else
printf("Not found in 10 iterations.");
return 0;
}