用将十进制转化为八进制。。改不了错呀!!!
#include<stdio.h>#include <malloc.h>
#define STACK_INIT_SIZE 100;
#define STACKINCERMENT 10;
#define OVERFLOW -1
#define ERROR 0
#define OK 1
typedef int Status;
typedef struct _stack
{
int *base;
int *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S);
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=100;
return 1;
}//InitStack
Status StackEmpty(SqStack S)
{
if(S->top==-1)
return OK;
else
return ERROR;
}
Status StackEmpty(SqStack S)
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
if(S->top==NULL) return 0;
else return 1;
}
Status push(SqStack &S,SElemType &e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)exit(OVERFOLW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}//Push
Status Pop(SqStack &s SElemType e)
{
if(S.top==S.base )return ERROR;
e=*--S.top;
return OK;
}//Pop
void conversion()
{
int N;
InitStack(S);
while (N);
{
push(S,N%8);
N=N/8;
}
while (!StackEmpty(S))
{
Pop(S,e);
printf("%d",e);
}
}//conversion;
void main()
{
SqStack s;
int e,N;
printf("请输入一个数\n");
scanf("%d",N);
InitStack(s);
conversion();
printf("\n");
}