输入一个整数,如果不是回文数,就倒序成另一个数,然后加到原来的数里面,知道出现回文数,输出步骤数及第一个出现的回文数
View Code
1 #include<stdio.h> 2 #include<string.h> 3 int rev(char *s)//这个函数判断字符串是否符合条件 4 { 5 char ss[100000]; 6 int i,flag=0; 7 strcpy(ss,s); 8 for(i=0;i<strlen(s);i++) 9 if(s[i]!=ss[strlen(s)-i-1]) 10 { 11 flag=1; 12 break; 13 } 14 if(flag) 15 return 1; 16 else return 0; 17 } 18 int main() 19 { 20 int i,j,n,len,js; 21 char str1[100000],str2[100000]; 22 while(scanf("%d",&n)!=EOF) 23 { 24 while(n--) 25 { 26 scanf("%s",str1); 27 js=0; 28 while(rev(str1)) 29 { 30 js++; 31 len=strlen(str1); 32 strcpy(str2,str1); 33 for(i=0;i<len;i++) 34 str2[i]+=str1[len-i-1]-'0';//复制一个之后倒序相加得到下一个 35 for(i=0;i<len-1;i++) 36 if(str2[i]>'9') 37 { 38 str2[i+1]++; 39 str2[i]-=10; 40 } 41 if(str2[i]>'9') 42 { 43 str2[len]='1'; 44 str2[len+1]='\0'; 45 str2[i]-=10; 46 }//以上的是判断进位 47 strcpy(str1,str2);//复制过去可以用于判断循环是否继续 48 } 49 printf("%d %s\n",js,str1); 50 } 51 } 52 }