進製的轉換 棧的應用

2021-10-24 14:44:26 字數 1304 閱讀 4755

將十進位制數n和其他d進製數之間進行轉換是計算機實現計算的基本問題,解決方案很多,其中最簡單的方法是除d取餘法。例如,(1348)10=(2504)8,其轉化過程如下所示:

n n div 8 n mod 8

1348 168 4

168 21 0

21 2 5

2 0 2

從中可以看出,最先產生的餘數4是轉換結果的最低位,這正好符合棧的「後進先出」的特性。所以可以用順序棧來模擬這個過程。

下面給出**實現

#include

#include

#define stack_init_size 100

#define stackincrement 10

typedef

int elemtype;

typedef

struct

sqstack;

intinitstack

(sqstack &s)

//棧的初始化

intpush

(sqstack &s,elemtype e)

//棧的插入

*s.top++

=e;return1;

}int

pop(sqstack &s,elemtype &e)

//棧的刪除

void

tran_2

(sqstack s,elemtype n)

//8進製轉換函式

printf

("轉換為2進製數為:");

while

(s.base!=s.top)

}void

tran_8

(sqstack s,elemtype n)

//8進製轉換函式

printf

("轉換為8進製數為:");

while

(s.base!=s.top)

}void

tran_16

(sqstack s,elemtype n)

//16進製制轉換函式

} n=n/16;

}printf

("轉換為16進製制數為:");

while

(s.base!=s.top)

else}}

void

menu()

//列印選單

進製轉換(棧的應用code)

進製轉換,指的是將某一種進製的數轉換為另一種進製的數表示。在計算機領域經常用到,二進位制,十進位制,十六進製制之間的相互轉換。本文基於棧這一工具實現進製的轉換,主要是因為在數學上,我們利用短除法來解決這一問題,先求得的餘數在表達上放在最後,這種機制跟棧的機制很像。首先我們先建立棧,並且保證其具有in...

棧的應用3 進製轉換

進製轉換可以使用使用取餘法來實現 基本上是學習程式設計最常見的乙個練習。學習幾個基本的單詞 被除數 dividend 除數 divisor 商 quotient 餘數 remainder function numberconversion num,base 出棧拼接資料 var num stack....

8585 棧的應用 進製轉換

注意 寫這個的時候有點忘記棧和佇列的區別了,棧的base是作為陣列首位址的,因為棧只在頂部進進出出,所以說沒有必要重新開乙個指標陣列,相反,佇列頭出尾進,兩邊都要用,所以我們不得不開乙個指標陣列elem來專門存放資料,另外分別定義首尾位置指示器,還有一點就是迴圈佇列其實是佇列的一種較優的實現方式 i...