#include"stdio.h"
#include"stdlib.h"
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define NULL 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
typedef int SElemType;
typedef int Status;
typedef struct{
SElemType base;
SElemType *top;//顶指针
int stacksize;
}SqStack;
Status InitStack(SqStack *S){//构造空栈
(*S).base=(SElemType)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!(*S).base)exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}
Status StackEmpty(SqStack S){//判断栈是否为空
return((*S).top==0);
}
Status Push(SqStack *S,SElemType e){
if((*S).top-(*S).base>=(*S).stacksize){
(*S).base=(SElemType)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!(*S).base) exit(OVERFLOW);
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINCREMENT;
}
*((*S).top)++=e;
return e;
}
Status Pop(SqStack *S,SElemType *e){
if((*S).top==(*S).base)return ERROR;
(*S).top--;
e=(*S).top;
return OK;
}
void conversion (int Num,int M) {
SElemType e;
SqStack S;
InitStack(&S); // 构造空栈
while (Num) {
Push(&S,Num%M);
Num = Num/M;
}
while (!StackEmpty(&S)) {
Pop(&S,&e);
printf ("%d\n", e);
}
//printf("\n");
}
int main(){
int n,m;
printf("请输入待转化的十进制数\n");
scanf("%d",&n);
printf("请输入您想转化的进制\n");
scanf("%d",&m);
conversion(n,m);
printf("为转化后的数");
}