進製轉換,指的是將某一種進製的數轉換為另一種進製的數表示。在計算機領域經常用到,二進位制,十進位制,十六進製制之間的相互轉換。
本文基於棧這一工具實現進製的轉換,主要是因為在數學上,我們利用短除法來解決這一問題,先求得的餘數在表達上放在最後,這種機制跟棧的機制很像。
首先我們先建立棧,並且保證其具有initial(),pop(),push(),is_empty()等基本操作。**如下:
1.建立乙個關於棧的結構體:
typedef struct stack stack;
2.initial()等操作函式:
void initial_stack(int n, stack* s)
void push_stack(char ch, stack* s)
*(s->top++) = ch;
void pop_stack(stack* s)
printf("%c ", *--s->top);
}bool empty(stack* s)
void get_top(stack* s)
void clearn_stack(stack* s)
3.進製轉換
void number_convert(stack* s, int value,int hex) ;
do while (value /= hex);
while(empty(s)==false)
}
進製的轉換 棧的應用
將十進位制數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...
棧的應用3 進製轉換
進製轉換可以使用使用取餘法來實現 基本上是學習程式設計最常見的乙個練習。學習幾個基本的單詞 被除數 dividend 除數 divisor 商 quotient 餘數 remainder function numberconversion num,base 出棧拼接資料 var num stack....
8585 棧的應用 進製轉換
注意 寫這個的時候有點忘記棧和佇列的區別了,棧的base是作為陣列首位址的,因為棧只在頂部進進出出,所以說沒有必要重新開乙個指標陣列,相反,佇列頭出尾進,兩邊都要用,所以我們不得不開乙個指標陣列elem來專門存放資料,另外分別定義首尾位置指示器,還有一點就是迴圈佇列其實是佇列的一種較優的實現方式 i...