3借助栈将输入任意一个非负的十进制整数,打印输出与其等值的八进制。

这是一道设计题,我想知道答案。谢谢!
2024年11月22日 03:27
有1个网友回答
网友(1):

#include
#include
#define ERROR 0
#define OK 1
typedef struct pstack//定义一个栈
{
int *base;
int *top;
}pstack;
void Initpstack(pstack *s)//构造一个空栈
{
s->base=(int *)malloc(sizeof (int));//为其分配空间
if(!s->base)
{
printf("ERROR!");
exit(0);
}
s->top=s->base;
}
void push(pstack *s,int t)//进栈
{
*s->top=t;
s->top++;
}
int pop(pstack *s)//出栈
{
int t;
if (s->top==s->base)return ERROR;
else
{
s->top--;
t=*s->top;
return t;//把值返回
}
}
int empty(pstack *s)//判断栈是否空
{
if(s->top==s->base)
return 1;
else
return 0;
}
void main()
{
int k,t;
pstack p;
Initpstack(&p);
printf("请输入十进制的数:");
scanf("%d",&k);
while(k!=0)
{
t=k%8;//取余数
push(&p,t);//把余数依次放入栈中
k=k/8;
}
while (empty(&p)!=1)
{
t=pop(&p);//依次从栈中取出余数
printf("%d",t);
}
printf("\n");
}
本程序在vc++6.0下编译通过,没问题。
其他编译器下稍微改一下即可实现