將十進位制數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...