10进制转8进制
设计一个顺序栈(包括初始化,进栈,出栈,判栈空4个操作),并利用这个栈设计实现一个十进制数化为八进制数的程序。
#include"stdio.h"
#include"stdlib.h"
#include"stdbool.h"
#include"malloc.h"#define MAX_SIZE 10
typedef int ElemType;typedef struct { //栈结构体ElemType *base;ElemType *top;int size;/* data */
}Stake;void Init(Stake *s){ //初始化s->base = s->top = (ElemType *)malloc(MAX_SIZE*sizeof(ElemType));s->size = MAX_SIZE;
}void push(Stake *s, ElemType e){ //入栈if(s->top - s->base > sizeof(ElemType)*s->size )printf("The Stake is Filled\n");else{*s->top = e;s->top++;}
}void pop(Stake *s){ //出栈if(s->top == s->base)printf("The Stake is Empty");else{s->top--;}
}ElemType get_top(Stake *s){ //获取栈顶元素if(s->base == s->top)exit(1);return *(s->top-1);
}bool empty(Stake *s){ //判别栈空if(s->top == s->base)return true;return false;
}void convertion(Stake *s, ElemType num){ //10进制 转 8进制while(num){push(s,num%8);num = num/8;}while(!empty(s)){printf("%2d",get_top(s));pop(s);}
}int main(){Stake stake;Init(&stake);int n;scanf("%d",&n);convertion(&stake,n);
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
