算法分析---回文數判斷


有這樣一類數字,他們順着看和倒着看是相同的數,例如:111112212332等,這樣的數字就稱為:回文數字。

回文數的判斷有多種算法,直觀一點的就是將數字順序顛倒后再與原數字進行比較,如果相等說明該數字是回文數字,如何顛倒數字的順序便是難點。

比如一個數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;
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM