所謂回文數,就是說一個數字從左邊讀和從右邊讀的結果是一模一樣的,例如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");
}
