十進位制數與N進製的轉換

2021-08-28 13:45:24 字數 1189 閱讀 9320

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,以此類推,十進位制...