有這樣一類數字,他們順着看和倒着看是相同的數,例如:1111,1221,2332等,這樣的數字就稱為:回文數字。
回文數的判斷有多種算法,直觀一點的就是將數字順序顛倒后再與原數字進行比較,如果相等說明該數字是回文數字,如何顛倒數字的順序便是難點。
比如一個數12345。
12345 % 10 得到的是個位上的5
12345 / 10 得到1234
1234 % 10 得到十位上的4
1234 / 10 得到123
123 % 10 得到百位上的3
123 / 10 得到12
12 % 10 得到千位上的2
12 / 10 得到1
1 % 10 得到萬位上的1
可見通過求余運算來求各個位上的數,通過除法運算來降位(指的是由萬位降到千位,千位再降到百位)
現在開始顛倒數字
第一步:
12345 % 10 = 5;求個位上的數
12345 / 10 =1234;降位
第二步:
1234 % 10 = 4;求十位上的數
1234 / 10 = 123; 降位
5 * 10 + 4 = 54;開始顛倒
第三步:
123 % 10 = 3; 求百位上的數
123 / 10 = 12; 降位
54 * 10 + 3 = 543; 繼續顛倒
第四步:
12 % 10 = 2; 求千位上的數
12 / 10 = 1; 降位
543 * 10 + 2 = 5432; 繼續顛倒
第五步:
1 % 10 = 1; 求萬位上的數
1 / 10 = 0; 降位
5432 * 10 + 1 = 54321; 顛倒完畢
#include <stdio.h> int IsPalindrome(int iNumber); void main(){ if(IsPalindrome(121)){ printf("是回文數\n"); } else{ printf("不是回文數\n"); } } int IsPalindrome(int iNumber){ //判斷是否為回文數的函數 int temp=0; int number = iNumber; while(number){ //顛倒數后保存到temp中 temp=temp*10+(number%10); number=number/10; } if(iNumber==temp) //是回文數,返回1 return 1; else return 0; }