題目:利用順序棧實現將任意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 定義為當棧的空間不夠時...