C语言实现,能运行,但是有点小问题
12的八进制是14,但打出来4
222的八进制的336,但打出来是36
总是第一个数字出不了栈,好难受啊,谢谢大哥们了
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
#define FALSE 0
#define TRUE 1
typedef struct sqStack
{
int data[MAXSIZE];
int top;
}*Stack;
Stack InitStack()
{
Stack s=(Stack)malloc(sizeof(struct sqStack));
s->top=0;
return s;
}
int StackFull(Stack s)
{
if(s==NULL)
{
return FALSE;
}
return s->top==MAXSIZE;
}
int StackEmpty(Stack s)
{
if(s==NULL)
{
return FALSE;
}
return s->top==0 ;
}
int Push(Stack s,int data)
{
if(StackFull(s))
{
return FALSE;
}
s->data[s->top]=data;
s->top++;
return TRUE;
}
int Pop(Stack s)
{
int data;
if(StackEmpty(s))
{
return FALSE;
}
s->top--;
data=s->data[s->top];
return data;
}
int main()
{
Stack s;
int i,j,k;
scanf("%d",&i);
s=InitStack();
j=i/8;
for(;j>0;j=j/8)
{
k=i%8;
Push(s,k);
i=j;
}
while(StackEmpty(s)!=1)
{
printf("%d",Pop(s));
}
return 0;
}
试着改了一下main函数里的for循环里的j>0变成j>=0,结果输入12,按回车,直接跳到新一行然后没办法动了,难受