进制转换用栈实现
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
#define MAXSIZE 100
enum Status{
OK=1,
ERROR=0,
OVERFLOW=-1
};
struct SqStack{
//定义一个栈
int *top;
int *base;
int stacksize;
Status InitStack(SqStack &S){
//栈的初始化
S.base = new int[MAXSIZE];
S.top=S.base;
return OK;
}
Status push(SqStack &S,int e){
//入栈
if((S.top-S.base)>=MAXSIZE)
return OVERFLOW;
*S.top++=e;
return OK;
}
Status pop(SqStack &S,int &e){
//出栈
if(S.top==S.base)
return ERROR;
e=*--S.top;
// cout<<"e="<<e<<endl;;
return OK;
}
};
void jzzh(SqStack &S,int n,int k){
while(n){
// cout<<n%k<<endl;
// int e=n%k;
S.push(S,n%k);
n/=k;
}
while(S.base!=S.top){
int e=0;
S.pop(S,e);
printf("%d",e);
}
}
int main()
{
SqStack S;
S.InitStack(S);
int n,k;
printf("请输入要转换的十进制数:");
cin>>n;
printf("请输入要转换的目标进制(2-10):");
cin>>k;
jzzh(S,n,k);
return 0;
}