代码如下:
#include<stdio.h>
#include<string.h>
using namespace std;
bool IsHuiWen(char a[])
{
int len=strlen(a);
for(int i=0; i<len/2; i++)
{
if(a[i]!=a[len-i-1])
return false;
}
return true;
}
int main()
{
char n[100];
char m[100]={0};
int k;
scanf("%s %d",n,&k);
int i;
for( i=0;i<k;i++)
{
if(IsHuiWen(n)){
break;
} //要先验证。防止121 3,这样的情况。
int len=strlen(n);
for(int j=0;j<len;j++)
m[j]=n[len-1-j];
m[len]='\0';
for(int j=0;j<len;j++)
{
m[j]+=n[j]-'0';
if(m[j]>'9'){
if(j==len-1)
{
m[j+2]='\0';
m[j+1]='0';
}
m[j+1]+=1;
m[j]-=10;
}
}
len=strlen(m);
for(int j=0;j<=len;j++)
{
n[j]=m[j];
}
}
int len=strlen(n);
if(i!=0){
for(int i=0;i<len;i++)
printf("%c",n[len-i-1]);
}
else
printf("%s",n);
printf("\n");
printf("%d",i);
}
总结:
1 对于字符数组的基本功要牢固。主要是char型数组结尾要有'\0',还有赋值等一下问题。
2 回文判断要在加法前先验证,因为有2个测试点给的数据一开始就是回文。