1)問題描述:將從鍵盤輸入的十進位制數轉換為n(如二進位制,八進位制,十六進製制)進製資料。
2)要求:利用順序棧實現數制轉換問題
#include
#include
//定義棧結構
typedef
struct stackstack;
//宣告函式
void
settable
(char
* table)
;void
push
(int number)
;int
pop();
intisempty()
;//宣告全域性變數
stack *stack;
void
main()
printf
("結果為:");
while
(isempty()
==0)putchar(10
);//換行
}//填充數字字母表
void
settable
(char table)
for(
;i<
37;i++)}
//入棧
void
push
(int number)
//出棧
intpop()
//判斷是否為空
intisempty()
1.題目思路
因為這是一道10進製轉換n進製的題目,所以演算法應該採用短除法
eg:十進位制:10 轉換成 二進位制:1010
(第一次) 10%2 =0, 10/2 = 5
(第二次) 5 % 2 =1, 5/2 = 2
(第三次) 2 % 2 =0, 2/2 = 1
(第四次) 1 % 2 =1, 1/2 = 0
這時候發現規律了吧----短除演算法計算的結果是從低位開始的(逆序的)。
那麼,這樣一種方式就可以利用棧的先進後出特性來得到正確的結果。
2.實現的方法
在一些需要逆序操作的時候,可以考慮下棧或者是遞迴
十進位製到n進製的轉換
隱藏行號 複製 demo n is the base,translate m to n baseint d2n base int m,int n,int buffer buffer index r return index int main int argc,char argv endif here...
將十進位制數M轉換為N進製數
題目描述 給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數。exp 輸入 輸入為一行,m 32位整數 n 2 n 16 以空格隔開,如7,2。輸出 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 如111...
進製轉換 十進位制數轉十六進製制數
十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位制的17在十六進製制中是11,以此類推,十進位制...