#include<malloc.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<process.h>
#define maxsize 100
typedef struct {
int *top;
int *base;
int stacksize;
}sqStack;
void initStack(sqStack &s)
{
s.base=(int *)malloc(maxsize*sizeof(int));
s.stacksize=maxsize;
s.top=s.base;
}
void Pop(sqStack &s,int &e)
{
if(s.base!=s.top) {
s.top--;
e=*s.top;
}
}
int GetTop(sqStack &s)
{
if(s.top!=s.base)
return *(s.top-1);
}
//栈空
bool Empty(sqStack &s)
{
if(s.top==s.base)
return true;
}
int push(sqStack &s,char x)
{
if(s.top-s.base==s.stacksize) return -1;
*s.top++=x;
return 0;
}
void convert(sqStack &s, int N,int n)
{
initStack(s);
do
{
push(s,N%n);
N/=n;
}
while(N!=0);
int i,e;
while(!Empty(s)){
Pop(s,e);
if(e>9)
{
e=e+55;
printf("%c",e);
}
else printf("%d",e);
}
printf("\n");
}
int main()
{
int i,num;
unsigned n,N;
sqStack s;
initStack(s);
printf("输入要转换的十进制数和要转换的进制数:\n");
scanf("%d %d",&N,&n);
printf("%d转换成%d进制后为:\n",N,n);
convert(s,N,n);
}
利用栈将十进制转换成任意进制,初始化后,将N%n不断压入栈底,再将栈中的数一个一个输出来