#include
#include
#include
#define M 20
typedef struct mystack
{
int a[M];
int top;//top表示数组元素的位置
}ST;
int isfull(ST *t);
int isempty(ST *t);
int pop(ST *t,int *data);
int push(ST *t,int data);
void transfer(int number);
int main()
{
int x;
printf("请输入一个十进制数:\n");
scanf("%d",&x);
while(x!=0)
{
transfer(x);
}
return 0;
}
int isfull(ST *t)//判断栈是否满
{
if(t->top==M-1)
return 1;
else return 0;
}
int isempty(ST *t)//判空
{
if(t->top
return 1;
else return 0;
}
int push(ST *t,int data)//入栈操作
{
if(!isfull(t))
{
(t->top)++;
t->a[t->top]=data;
return 1;
}
else return 0;
}
int pop(ST *t,int *data)//*data表示出栈元素
{
if(!isempty(t))
{
*data=t->a[t->top];
(t->top)--;//栈长度减一
return 1;
}
else return 0;
}
void transfer(int number)
{
ST t;
int r;
t.top=-1;
while(number)//number 为非零时,持续求余
{
r=number%8;
push(&t,r);//入栈
number=number/8;//整除运算
}
while(!isempty(&t))
{
pop(&t,&r);//出栈
printf("%d",r);
}
printf("\n");
}