#include "stdio.h"
#include "stdlib.h"
#define M 100
typedef struct stack //定义栈
{
int *base,*top;
int stacksize;
}sqstack;
int initstack(sqstack &s) //初始化栈
{
s.base=(int *)malloc(M*sizeof(int));
s.top=s.base;
s.stacksize=M;
return 1;
}
int push(sqstack &s,int e) //压栈
{
*s.top=e;
s.top++;
return 1;
}
int emptystack(sqstack s) //清空栈
{
if (s.top==s.base) return 1;
else return 0;
}
int pop(sqstack &s,int &e) //弹栈
{
if (emptystack(s)) return 0;
--s.top;
e=*s.top;
return 1;
}
void conversion(int n,int p) //转换进制函数
{
sqstack s;
int r;
initstack(s);
while(n)
{
push(s,n%p);
n=n/p;
}
printf("输出转换后的值为:\n");
while(s.top!=s.base)
{
pop(s,r);
if(r>9)
{
printf("%c",r+55);
}
else
{
printf("%d",r);
}
}
printf("\n");
}
void main() //主函数
{
int a1,a2;
printf("请输入十进制的数和要转换的进制:\n");
scanf("%d%d",&a1,&a2);
conversion(a1,a2);
}