查看原题目请点我
解题思路:本题属于字符串的处理,主要是反转和大数相加的过程,如果会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;
}