十进制转八进制,求大神哥哥来帮忙一下下,感激

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,按回车,直接跳到新一行然后没办法动了,难受