用栈来实现进制进制转换 应使用辗转相除法 注意栈的操作 #include <stdio.h> #include <stdlib.h> #define S_SIZE 100 #define STACKINCREMENT 10 typedef struct SqStack{ int *base; int top; int stacksize; }SqStack; //初始化空栈 void InitStack(SqStack &S) { S.base=(int *)malloc(S_SIZE*sizeof(int)); S.stacksize=S_SIZE; S.top=-1; } //判断空栈 int StackEmpty(SqStack &S) { if(S.top==-1) return 1; else return 0; } //判断栈满 int StackFull(SqStack &S) { if(S.top==S.stacksize) return 1; else return 0; } //进栈 void push(SqStack &S,int x) { if(StackFull(S)) printf("栈满\n"); S.base[++S.top]=x; } //出栈 int pop(SqStack &S) { int x; if(StackEmpty(S)) printf("栈空\n"); x=S.base[S.top]; S.top--; return x; } //进制转化函数 void convert(SqStack &S,int N,int n) { int i,x; do { push(S,N%n); N/=n; } while (N!=0); while(!StackEmpty(S)) { x=pop(S); if(x>9) { if(x==10) x='A'; if(x==11) x='B'; if(x==12) x='C'; if(x==13) x='D'; if(x==14) x='E'; if(x==15) x='F'; //16 进制的转换 printf("%c",x); } else printf("%d",x); } printf("\n"); } int main() { int n,N;//要转换成的进制数和要转换的数 SqStack s; scanf("%d%d",&n,&N) ; InitStack(s); printf("%d转换为%d进制后为:\n",n,N); convert(s,n,N); return 0; } 这样就可以啦..........
数据结构c 进制转换问题(栈)
最新推荐文章于 2021-10-31 21:04:55 发布