题目描述
对于输入的任意一个非负十进制整数,利用栈打印输出与其等值的八进制数。
输入
111
输出
157
样例输入
148
样例输出
224
参考代码
#define STACK_INIT_SIZE 100 //åå¨ç©ºé´åå§åé
é
#define STACKINCREMENT 10 //åå¨ç©ºé´åé
å¢é
#define ERROR 0
#define OVERFLOW -2
#include <stdio.h>
#include<stdlib.h>
typedef int SElemType;
typedef struct
{
SElemType *base;
// å¨æ æé ä¹ååéæ¯ä¹åï¼base çå¼ä¸ºNULL
SElemType *top;
// æ 顶æé
int StackSize;
//å½åå·²åé
çåå¨ç©ºé´,以å
ç´ ä¸ºåä½
}
SqStack;
//åå§åæ
void 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;
}
// å人æ
void 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(OVERFLOW);
//è¥å
åä¸æ²¡æs->StackSize+STACKINCREMENT个è¿ç»ç©ºé´ååé
失败
s->top=s->base+s->StackSize;
s->StackSize+=STACKINCREMENT;
}
*s->top++ =e;
}
//å¼¹åºæ
int Pop(SqStack *s,SElemType *e)
{
if (s->top==s->base) return ERROR;
s->top=s->top-1;
*e = *s->top;
return *e;
}
//å¤ç©ºæ
int StackEmpty(SqStack s)
{
if (s.top ==s.base)
{
return 1;
} else
{
return 0;
}
}
void Conversion(int N)
{
SElemType e;
SqStack s;
InitStack(&s);
while(N)
{
Push(&s,N%8);
N= N/8;
}
// printf("转æ¢åçå
«è¿å¶æ°ä¸ºï¼");
while(StackEmpty(s)!=1)
{
Pop(&s,&e);
printf("%d",e);
}
printf("n");
}
void main()
{
int n;
// printf("请è¾å
¥ä¸ä¸ªåè¿å¶æ°ï¼");
scanf("%d",&n);
Conversion(n);
}
解析
暂无