首先最简单的是实现10进制和2进制的转换
/* 输入一个数,然后输出其对应的8进制的数 */ #include<stdio.h> #define MAX 1000//顺序栈存储空间最大值 //int n,m;//n表示输入的数,m表示输出的数的进制 //先定义一个顺序栈的结构 typedef struct{ int *base;//栈底4指针 int *top;//栈顶指针 int stacksize; }SqStack; //初始化顺序栈 int InitStack(SqStack &S){ S.base=new int[MAX]; if(!S.base){ return 0;//存储空间分配失败 } S.top=S.base; S.stacksize=MAX; return 1; } //判断栈是否为空 int IsEmpty(SqStack &S){ if(S.base==S.top){ return 1;//栈空 }else{ return 0;//栈非空 } } //入栈 int Push(SqStack &S,int e){ if(S.top-S.base==S.stacksize){ return 0;//栈满 } *S.top++=e; return 1; } //出栈 int Pop(SqStack &S,int &e){ if(S.top==S.base){ return 0;//栈空 //printf("栈空\n"); } e=*--S.top; return 1; //printf("%d",e); } //数制转换 void conversion(SqStack &S,int n){ //n表示输入的数,m表示输出的数的进制 InitStack(S); while(n){ Push(S,n%2); n=n/2; } while(!IsEmpty(S)){ int e; Pop(S,e); printf("%d",e); } } int main(){ SqStack S; if(InitStack(S)){ printf("栈S初始化成功!\n"); }else{ printf("栈S初始化失败!\n"); } if(IsEmpty(S)){ printf("栈为空.\n"); }else{ printf("栈非空.\n"); } int n; printf("请输入数n:"); scanf("%d",&n); conversion(S,n); }原文链接:https://www.f2er.com/datastructure/382500.html