#include<stdio.h>//进制转换
#define STACK_INIT_SIZE 100
#define STACKSIZE 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef int SElemType;
typedef struct
{
SElemType* base;
SElemType* 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 = STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack& S, const SElemType& e)
{
if (S.top - S.base >= STACK_INIT_SIZE)
{
S.base = (SElemType*)malloc((STACK_INIT_SIZE + STACKSIZE) * sizeof(SElemType));
if (!S.base) exit(OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize += STACKSIZE;
}
*S.top++ = e;
return OK;
}
Status Pop(SqStack& S, SElemType& e)
{
if (S.top == S.base) return ERROR;
e = *--S.top;
return OK;
}
Status GETtop(SqStack S, SElemType& e)
{
if (S.top == S.base) return ERROR;
e = *(S.top - 1);
return OK;
}
Status visist(SqStack S)
{
if (S.top == S.base) exit(OVERFLOW);
SElemType* q = S.base;
for (; q != S.top; q++)
{
printf("%d", q);
}
return OK;
}
Status StackEmpty(SqStack S)
{
if (S.top == S.base)
return 1;
else
return 0;
}
void conversion(int N) {
SqStack S;
SElemType e;
Initstack(S);
while (N)
{
Push(S, N % 8);
N = N / 8;
}
while (!StackEmpty(S))
{
Pop(S, e);
printf("%d", e);
}
printf("\n");
}
int main()
{
int N;
scanf("%d", &N);
conversion(N);
return 0;
}
十进制转八进制
最新推荐文章于 2023-12-20 18:11:54 发布