qq_38284913 2017-04-12 07:32 采纳率: 100%
浏览 972
已采纳

c语言代码纠错,求助大神

十进制正整数化为八进制
#include//2012非负十进制化八进制
#include
#include//含有OVERFLOW的值
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 10//初始分配
#define STACKINCRTMENT 2//增量
typedef int Status;
typedef struct SqStack
{
int *base;
int *top;
int stacksize;
}SqStack;//顺序栈

Status InitStack(SqStack *S)//造空栈
{
(*S).base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}

Status push(SqStack *S,int e)//入栈
{
if((*S).top-(*S).base>=(*S).stacksize)
{
(*S).base=(int *)realloc((*S).base,((*S).stacksize+STACKINCRTMENT)*sizeof(int));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINCRTMENT;
}
*((*S).top)++=e;
return 0;
}

Status pop(SqStack S,int *e)//出栈
{
if((*S).base==(*S).top)
return ERROR;
*e=
--(*S).top;
return OK;
}

Status StackEmpty(SqStack S)//判空
{
if(S.base==S.top)
return OK;
else
return ERROR;
}

void conversion(int n)//十化八
{
SqStack s;
int 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(void)
{
int n;
while(scanf("%d",&n)!=EOF)
{
conversion(n);
}
return 0;
}
#include//2012非负十进制化八进制
#include
#include//含有OVERFLOW的值
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 10//初始分配
#define STACKINCRTMENT 2//增量
typedef int Status;
typedef struct SqStack
{
int *base;
int *top;
int stacksize;
}SqStack;//顺序栈

Status InitStack(SqStack *S)//造空栈
{
(*S).base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}

Status push(SqStack *S,int e)//入栈
{
if((*S).top-(*S).base>=(*S).stacksize)
{
(*S).base=(int *)realloc((*S).base,((*S).stacksize+STACKINCRTMENT)*sizeof(int));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINCRTMENT;
}
*((*S).top)++=e;
return 0;
}

Status pop(SqStack S,int *e)//出栈
{
if((*S).base==(*S).top)
return ERROR;
*e=
--(*S).top;
return OK;
}

Status StackEmpty(SqStack S)//判空
{
if(S.base==S.top)
return OK;
else
return ERROR;
}

void conversion(int n)//十化八
{
SqStack s;
int 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(void)
{
int n;
while(scanf("%d",&n)!=EOF)
{
conversion(n);
}
return 0;
}

展开全部

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-04-12 07:36
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部