利用順序棧(基於陣列)實現十進位制轉換輸出其他進製數

2021-08-05 21:55:54 字數 1197 閱讀 5571

題目:利用順序棧實現將任意10進製數轉換成對應的二進位制,八進位制,16進製制輸出

思路:利用短除法的原理以及棧先進後出的特點,先構建好乙個順序棧,這裡我用的是陣列,把每一次整除的餘數壓進棧裡,然後再把棧裡的資料依次取出,輸出的便是對應進製的結果,需要注意的是十六進製制比較特殊

,得判斷輸出字母的情況

**如下:

#include #include #include #define n 50

enum bool; //定義列舉型輔助判斷

struct stack //用乙個結構體來定義棧

;struct stack *s_init() //棧的初始化

bzero(s,sizeof(struct stack)); //清空結構體

s->top = -1; //初始化top

return s;

}enum bool stack_empty(struct stack *s) //判斷棧是否為空

enum bool stack_full(struct stack *s) //判斷棧是否滿了

enum bool stack_push(struct stack *s,int x) //入棧(插入新元素)

else }

int stack_pop(struct stack *s)//退棧

else

printf("棧是空的\n");

}int sysconvert(int n,int m)//進製轉換,n為需要轉換的十進位制數,m為目標進製

printf("轉換後的結果為:");

while(!stack_empty(st))

return 0;

}int main(int argc, char const *argv)

printf("請輸入要轉換的進製:");

while(1)

sysconvert(n,m);

printf("\n");

return 0;

}

ps:我用的是linux下的gcc編譯,貌似不支援bool型,執行報錯,所以我定義了乙個列舉型別來判斷,當然也可以用巨集定義。輸入的時候增加了合法性的判斷,執行結果如下

剛學棧沒多久,程式不足之處希望大家指出。

順序棧實現十進位制轉換二進位制

include include include define m 100 typedef int datatype typedef structseqstack void initstack seqstack s int stackempty seqstack s seqstack push seq...

利用棧實現整數的十進位制轉八進位制

任務描述 本關任務 基於棧stack資料結構解決整數十進位制轉八進位制的問題。相關知識 棧是基礎的資料結構,元素操作遵循後進先出的原理。本關卡基於陣列儲存實現了棧的基本操作。c stl中提供了棧結構的實現 1 c stl棧stack的標頭檔案為 include2 c stl棧stack的成員函式介紹...

利用棧二進位制轉化為十進位制

利用資料中的棧來進行數制轉換,可以深刻領悟棧的含義,也可對棧的定義,入棧,出棧來進行領悟。程式 如下 include include include define stack init size 20 定義為棧的初始記憶體大小 define stackincrement 10 定義為當棧的空間不夠時...