1. 程式人生 > >棧-十進位制整數轉換為八進位制

棧-十進位制整數轉換為八進位制

十進位制數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);
	 }
}