#include
#include
#define StackInitSize 100
typedef struct
{ int data[StackInitSize];
int top;
} SeqStack; //定义一个栈类型
SeqStack *InitStack() //初始化一个栈
{ SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack));
if(s!=NULL)
{ s->top=-1;
return s;
}
else
{ printf("没空间\n");
exit(0);
}
}
int isempty(SeqStack *s) //判断是否为空栈
{ return (s->top==-1)?1:0;
}
void push(SeqStack *s,int x) //进栈
{ if(s->top==StackInitSize)
{ printf("栈满了");
exit(0);
}
else
{ s->top++;
s->data[s->top]=x;
}
return;
}
/*void push1(SeqStack *s,char x) 这段进栈的程序不要,栈的数据域类型为int
{ if(s->top==StackInitSize)
{ printf("栈满了");
exit(0);
}
else
{ s->top++;
s->data[s->top]=x;
}
return;
}*/
int pop(SeqStack *s) //出栈
{ int temp;
if(isempty(s))
{ printf("kong");
exit(0);
}
else
{ temp=s->data[s->top];
s->top--;
return temp;
}
}
void conversion(int N,int r) //进制转化
{ SeqStack *s;
int x;
char c;
s=InitStack();
while(N!=0)
{ push(s,N%r);
N=N/r;
}
while(!isempty(s))
{ x=pop(s);
if (x<10)
printf("%d",x);
else
printf("%x",x);
}
printf("\n");
}
int main()
{ int X,r;
printf("输入十进制的整数:");
scanf("%d",&X);
while(X!=0)
{ printf("输入转换进制数:");
scanf("%d",&r);
printf("结果是:");
conversion(X,r);
printf("输入十进制的数:");
scanf("%d",&X);
}
}