PTA(Basic Level) 1079:延迟的回文数(C语言实现)
#include <stdio.h>
#include <string.h>
void reverse(char s[])
{
int i,j;
char t;
for(i=0,j=strlen(s)-1; i<j; i++,j--)
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
void add(char s1[],char s2[])
{
int i,c=0;
for(i=strlen(s1)-1; i>=0; i--)
{
s1[i+1]=(s1[i]-'0'+s2[i]-'0'+c)%10+'0';//结果放在s1中
c=(s1[i]-'0'+s2[i]-'0'+c)/10;
}
if(c>0)
s1[0]=c+'0';
else
{
for(i=1; s1[i]; i++)
s1[i-1]=s1[i];
s1[i-1]='\0';
}
}
int main()
{
int i;
char s1[10000]="",s2[10000]="";
gets(s1);
for(i=0; i<10; i++)
{
strcpy(s2,s1);
reverse(s2);//逆转
if(strcmp(s1,s2)==0)//回文与回文的逆转数相等
{
printf("%s is a palindromic number.",s1);
break;
}
else
{
printf("%s + %s = ",s1,s2);
add(s1,s2);//字符串加
printf("%s\n",s1);
}
}
if(i == 10)
printf("Not found in 10 iterations.");
return 0;
}
还没有评论,来说两句吧...