C語言之任意進製的轉換

2021-07-06 07:42:21 字數 954 閱讀 6492

我們都知道轉換進製是乙個讓人比較頭疼的事情,下面我的**不是最好的,也就僅僅是乙個思路而已,至少我認為使用棧來進行進製轉換是比較合適的一種方法,好了,不多敘述了。

#include

#include

/* 函式trans將無符號整數n翻譯成d(2<=d<=16)進製表示的字串s */

#define m sizeof(unsigned int)*8

int trans(unsigned n, int d, char s)

buf[i]='\0';

dowhile(n);

/* 將譯出在工作陣列中的字串複製到s */

for(j=0;(s[j]=buf[i])!='\0';j++,i++);

/* 其中控制條件可簡寫成s[j]=buf[i] */

return j;

}/* 主函式用於測試函式 trans() */

main()

; char str[33];

int i;

clrscr();

for(i=0;iprintf("\n press any key to quit...\n");

getch();

}

下面我們來看看最為核心的一步,那就是獲得餘數的方式

do

while(n);

注意這裡的buf[i–],便是為了使得目標數對進製數取餘後的結果存入buf的尾部,這其實也是利用了棧的知識,此處我們可以把buf陣列,看做是乙個儲存結構為順序表的順序棧,這樣就可以直接獲得轉換過進製之後的一串數字了。避免了再次進行尾部獲取的步驟。

總結:資料結構不是一套空泛的理論,它是一套靈活的解決問題的法寶,我們要多加思考,多加利用,來優化和改進我們的程式。這也是為什麼」有時候優雅的實現,僅僅是需要乙個函式,而這個函式必然聯絡著我們的資料結構「,最後希望我們能夠共同進步吧。

C語言任意進製數的轉換

c語言任意進製數的轉換 hud 2031 problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果...

c語言之進製轉換(棧實現)

從上兩篇部落格中我們可以知道,棧具有後進先出的特性,而進製轉換的列印輸出剛好與計算過程相反,滿足棧這後進先出的特性,所以可以用棧很快的實現進製轉換,下面是用棧實現進製轉換的c函式 void conversion sqstack pstack,unsigned int n,const unsigned...

任意進製轉換十進位制 c語言

也不算是任意進製,最高只能到十六進製制。見諒!如下 include include include define maxsize 100 靜態順序棧儲存的最大空間 const char f 0123456789abcdef 定義乙個全域性常量 方便匯出十進位制以上的不為數字形式的資料的顯示 void...