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