qq_38284913 2017-04-12 15: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 15:36
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PdfiumViewer pdf转图片
  • ¥15 利用Java连接API接口总是出问题
  • ¥15 请教一个关于镜头标定,棋盘格格子大小的问题(畸变测试)
  • ¥15 安装GroudingDINO RuntimeError: Error compiling objects for extension
  • ¥15 关于推送项目到github的问题
  • ¥15 急!C++指针编写相关的问题
  • ¥15 kerberos身份认证配置问题
  • ¥30 用python写一个多签情况下波场的代理资源和回收资源
  • ¥15 matlab学期例题代码答疑
  • ¥15 在线手电筒追加按钮JS