m0_74832413 2023-03-31 09:08 采纳率: 100%
浏览 16
已结题

如何用栈进制转换 输出乱码?

用栈进制转换 输出乱码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
#define MAXSIZE 2000
#define OVERFLOW -2
#define ERROR 0
#define OK 1
#define Status int

typedef int SELemType;
typedef struct
{
    SELemType* base;
    SELemType* top;
    int stacksize;
}SqStake;
Status InitStack(SqStake* S)
{
    S->base = (SELemType*)malloc(MAXSIZE * sizeof(SELemType));
    if (!S->base)exit(OVERFLOW);
    S->top = S->base;
    S->stacksize = MAXSIZE;
    return OK;
}
Status Push(SqStake* S, SELemType e) {
    if (S->top - S->base == S->stacksize)
        return ERROR;
    *S->top++ = e;
    return OK;



}
Status Pop(SqStake* S, SELemType* e) {
    if (S->base == S->top)
        return ERROR;
    --S->top;
    e = *S->top;
    return OK;


}
int StackEmpty(SqStake S)
{
    if (S.top ==S.base)
    {
        return 0;
    }
    else
    {
        return 1;
    };



}


void conversion()
{
    SqStake S;
    SELemType h;
    InitStack(&S);
    printf("请输入非负的数:\n");
    scanf("%d", &h);
    while (h)
    {

        Push(&S, h % 8);
        h = h / 8;
    }
    SELemType e;
    while (StackEmpty(S))
    {
    
        Pop(&S, &e);
        printf("%d", e);
    }
}


void main()
{
    conversion();
    system("pause");
}
  • 写回答

5条回答 默认 最新

  • 瓜洲大大 2023-03-31 09:21
    关注

    在 Pop 函数中,需要将传入的指针 e 解引用才能将弹出的栈顶元素赋值给它,所以需要修改 Pop 函数的实现,将 e = *S->top; 改为 *e = *(--S->top)。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备