棧-十進位制整數轉換為八進位制
阿新 • • 發佈:2018-12-13
十進位制數N和其他d進位制數的轉換是計算機實現計算的基本問題。有一個簡單演算法基於下列原理:
N=(N div d) * d + N mod d (div為整除運算,mod為求餘運算)
對於輸入的任意一個非負十進位制整數,列印輸出與其等值的八進位制數。
執行結果:
由於上述計算過程是從低位待高位孫旭產生八進位制數的各個數位,而列印輸出,一般來說應該從高位到低位進行,恰好和計算過程相反。因此,若將計算過程中得到的八進位制數的各位順序進棧,則按出棧順序列打輸出的即為對應的八進位制數。
演算法實現:
void Conversion(){ //十進位制整數轉換成八進位制 int n; SqStack<int> S; int e; printf("請輸入十進位制整數:"); scanf("%d",&n); InitStack(S); while(n) { Push(S,n%8); n=n/8; } printf("得到八進位制整數:"); while(!StackEmpty(S)){ Pop(S,e); printf("%d",e); } }