首页 > 代码库 > HDU - 1282 回文数猜想

HDU - 1282 回文数猜想

题意:对数字的一些操作。

1.在stdlib.h中有个函数itoa(),可以实现整型数字转化成字符串。(---->还有其他类型可以转换)
itoa的用法:
itoa(i,num,10);
i 需要转换成字符的数字
num 转换后保存字符的变量(数组)
10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等进制类型。

2.如何把数字正序和倒序相加。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #define M 1000000
 5 char num[M];
 6 int rnum[1000];
 7 int is_Palindrome(int n){
 8     memset(num,0,sizeof(num));
 9     itoa(n,num,10);
10     for(int i=0,j=strlen(num)-1;i<=j;i++,j--){
11         if(num[i]!=num[j]) return 0;
12     }
13     return 1;
14 }
15 int add(int n){
16     int rn=n;
17     int sum=0;
18     while(n){
19         sum=sum*10+n%10;
20         n=n/10;
21     }
22     return sum+rn;
23 }
24 int main(){
25     int n,count,t;
26     while(scanf("%d",&n)!=EOF){
27         count=0,t=0;
28         if(is_Palindrome(n)==1){printf("%d\n",count);printf("%d\n",n);continue;}
29         else{
30             while(is_Palindrome(n)!=1){
31                 rnum[t++]=n;
32                 n=add(n);
33                 count++;
34             }
35             rnum[t]=n;
36         }
37         printf("%d\n",count);
38         for(int i=0;i<=t;i++){
39             if(i==0) printf("%d",rnum[i]);
40             else printf("--->%d",rnum[i]);
41         }
42         printf("\n");
43     }
44     return 0;
45 }

 

HDU - 1282 回文数猜想