fuill 2021-10-17 12:19 采纳率: 66.7%
浏览 74
已结题

c语言栈实现进制转换问题

以下是我测试的代码

#include  <stdio.h>
#include <iostream.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct seqstack
{   datatype a[MAXSIZE];
    int top;
}seqstack;
void init(seqstack *s)
{
   s->top=-1;
}
int empty(seqstack s)
{
   return(s.top==-1?1:0);
}
void  push(seqstack  *s, datatype  x)
{  if(s->top==MAXSIZE-1)
   {  printf("溢出"); exit(1); }
   else
   {  s->top++; s->a[s->top]=x; }
}
datatype  pop(seqstack  *s )
{   datatype  x;
    if(s->top!=-1)
    {  x=s->a[s->top]; s->top--; return  x; }
    else
    {  printf("栈为空!!! "); exit(1); }
}

datatype getTop(seqstack *s)
{
    if(s->top!=-1)
    return s->a[s->top];
    else
    {
        printf("stack is empty!\n");
        exit(1); 
    }
}
void conversion(int n,int m)
{
    seqstack *s;
    int x;
    init(s);
    while( n )
    {
        push(s,n%m);
        n/m;
    }
    
    printf("转换成目的进制后:");
    while(empty(*s)!=1)
    {
        x = getTop(s);
        pop(s);
        if(x > 9){
            printf("%c",x+87);
        }
        else{
            printf("%d",x);
        }
    }
    printf("\n");
    
}
int main()
{
        int n,d;
        printf("请输入一个正的10进制整数:");
        scanf("%d",&n);
        printf("请输入要转换成的进制(2-16):");
        scanf("%d",&d);
        conversion(n,d);
}


运行时会这样

img

展开全部

  • 写回答

2条回答 默认 最新

  • Fjb_eR 2021-10-17 13:36
    关注
    • 这个函数这样子写,先前对栈的初始化应该有点问题的
      void init(seqstack *&s)
      {
      s=(seqstack *)malloc(sizeof(seqstack));
      s->top=-1;
      }
    • 进栈和出栈函数的形参*s,我觉得改成*&s(我觉得而已……)

    • 改好之后其实也还有些其他问题,我暂时也没有发现()

    • 问题1,cinversion函数中,while(n)循环,假如n是5的话,就是死循环。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    fuill 2021-10-17 14:02

    终于可以运行了。。。。感谢!!!我再试一下

    回复
    fuill 2021-10-17 14:06

    题目的代码就给的这个:
    int empty(seqstack s)
    {
    return(s.top==-1?1:0);
    }

    这个是不能用吗

    回复
    Fjb_eR 回复 fuill 2021-10-17 14:11

    能用的

    回复
    展开全部7条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月24日
  • 已采纳回答 10月17日
  • 创建了问题 10月17日
手机看
程序员都在用的中文IT技术交流社区

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

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

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

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

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

客服 返回
顶部