整數的逆序 & 順序輸出

整數的逆序輸出

1.算法思路

  1. 利用%取餘運算,根據不同進制數數據採用不同;
  2. 對取得餘數進行逆運算(乘以剛纔除數),然後加上剛纔取得餘數;
  3. 循環上一步;

2、代碼如下:

//  整數的逆序輸出 
#include <stdio.h>
int main() 
{
	int x;
	 printf("請輸入一個整數:");
	 scanf("%d",&x);
	// x=700;
	int digit;
	int ret = 0;
	while (x>0){
		digit = x%10;
		// printf("%d\n",digit);
		ret = ret*10+digit;
		// printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);
		x/=10;
		
	}
	printf("逆序數爲:%d",ret);
	
	return 0;
}

代碼輸出:
請輸入一個整數:123456
逆序數爲:654321
--------------------------------
Process exited after 5.501 seconds with return value 0
請按任意鍵繼續. .

代碼分析:主要是取餘運算,和逆序輸出銜接問題。

整數的順序輸出

  1. 算法思路
    1、當整數進行順序輸出時,首先要利用除法對它的最高位進行取整,然後對餘數進行再取整,依次輸出最高位取整結果。
    2、這個運算需要知道輸入的整數是幾位數的整數,然後才能參與運算。

  2. 代碼如下:

#include<stdio.h>
int main()
{
       	//		x=13425;
		//		x/10000   >1;
		//		x%10000   >3425;
		//		10000/10  >1000;
		//		3425/1000  >3;
		//		3425%1000  >425;
		//		1000/10    >100;
		//		425/100    >4;
		//		425%100    >25;
		//		100/10     >10;
		//		25/10      >2;
		//		25%10      >5
		//		10/10      >1;
		//      5/1       >5;
		//      5%1       >5;
		//      1/10      >0;	
	int x;
	scanf("%d",&x);
	int mask=1;	
	int t=x;
	while(t>9){
		t/=10;
		mask*=10; 
	}
	printf("x=%d,mask=%d\n",x,mask);
	while(mask>0){
		int d=x/mask;
		if(mask>0){
			printf("%d ",d);
		}
		x%=mask;
		mask/=10;
	}	
	return 0;
}

代碼輸出:
		70000
		x=70000,mask=10000
		7 0 0 0 0
		--------------------------------
		Process exited after 6.554 seconds with return value 0
		請按任意鍵繼續. . .

代碼分析:
這裏的出彩部分就是採用了 d=x/mask ;mask>0 進行了判定,沒有用 x 的值作爲條件循環的判斷語句,可以更好的避免了邊條件的輸出錯誤問題。

while(mask>0){
		int d=x/mask;
		if(mask>0){
			printf("%d ",d);
		}
		x%=mask;
		mask/=10;

總結
循環的判定條件很重要,用的好可以起到優化程序使代碼更加簡潔的效果,在累加的計算中初始化變量一定要設置爲0;累乘的計算中初始化變量爲1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章