所謂回文數,就是說一個數字從左邊讀和從右邊讀的結果是一模一樣的,例如12321。判斷給出的整數是否是回文數;若是,則輸出該整數各位數字之和;否則輸出該數不是一個回文數。
原理大致為:任何一個數除以10的余數就是該數最后一位;任何一個數除以10的商就是排除掉最后一位后的數;所以 ,一個數1234 就可以通過這種方法得到 123 和 4;接下來對 123 進行同樣的操作,就得到 12 和 3;接下來得到 1 和 2;接着得到 0 和 1;整個過程是個循環,當商不是 0 的時候就一直如此;每次拿到一個余數,都用來構造新數,新數=新數*10+余數;所以經過四次循環后,我們得到新數 4321 ,如果是回文,那么新數應該等於原數,否則,說明不是回文。
1、判斷一個數是不是回文數
#include <stdio.h> void main() { int sum=0,s,n; scanf("%d",&s); n=s; while(n>0) { sum=sum*10+n%10; n=n/10; } if(sum==s) { printf("%d是一個回文數\n",s); }else { printf("%d不是一個回文數",s); } }
2、判斷一個字符串是不是回文數
#include <stdio.h> void main() { int i,j,n; char a[100],b[100]; scanf("%s",a); n=strlen(a); j=n-1; for(i=0;i<n;i++)//循環將字符串a逆序賦值給b { b[j]=a[i]; j--; } for(i=0;i<n;i++) { if(a[i]!=b[i]) break; } if(i==n) printf("是一個回文數\n"); else printf("不是一個回文數\n"); }