栈学习之----数制转换
题目:输入一个被转换的数,再输入一个转换的数制,输出所转换的进制
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct
{
DataType data[MAXSIZE];
int top;
}SeqStack;
int Push(SeqStack *s, DataType x)
{
if (s->top==MAXSIZE-1)
{
printf("栈上溢出!\n");
return 0;
}
s->top = s->top + 1;
s->data[s->top]=x;
return 1;
}
int Pop(SeqStack *s)
{
DataType x;
if (s->top==-1)
{
printf("栈下溢出!\n");
exit(0);
}
x=s->data[s->top];
s->top--;
return x;
}
int Empty(SeqStack *s)
{
return(s->top<0?1:0);
}
int InitStack(SeqStack *s)
{
s->top =-1;
return 1;
}
void Conver(int n,int m)
{
int x;
SeqStack *s,s1;
s=&s1;
InitStack(s);
while(n)
{
x=n%m;
Push(s,x);
n/=m;
}
printf("转换后的%d进制数为: ",m);
while(!Empty(s))printf("%d",Pop(s));
printf("\n");
}
int main()
{
int n,m;
printf("输入一个十进制正整数:");
scanf("%d",&n);
printf("输入转换数制:");
scanf("%d",&m);
Conver(n,m);
return 1;
}