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 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码