DaturaF 2015-11-04 10:51 采纳率: 0%
浏览 1493

c语言用栈做的数制转换,为什么输出不对啊,总是4206655,还停不下来

#include"stdio.h"
#include"stdlib.h"
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define NULL 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0

typedef int SElemType;
typedef int Status;
typedef struct{
SElemType base;
SElemType *top;//顶指针
int stacksize;
}SqStack;
Status InitStack(SqStack *S){//构造空栈
(*S).base=(SElemType
)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!(*S).base)exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}
Status StackEmpty(SqStack S){//判断栈是否为空
return((*S).top==0);
}
Status Push(SqStack *S,SElemType e){
if((*S).top-(*S).base>=(*S).stacksize){
(*S).base=(SElemType
)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!(*S).base) exit(OVERFLOW);
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINCREMENT;
}
*((*S).top)++=e;
return e;
}
Status Pop(SqStack *S,SElemType *e){
if((*S).top==(*S).base)return ERROR;
(*S).top--;
e=(*S).top;
return OK;
}
void conversion (int Num,int M) {

SElemType e;
SqStack S;
InitStack(&S);      // 构造空栈
while (Num) {
    Push(&S,Num%M);
    Num = Num/M;
}
while (!StackEmpty(&S)) {
    Pop(&S,&e);
    printf ("%d\n", e);
}
//printf("\n");

}
int main(){

int n,m;
printf("请输入待转化的十进制数\n");
scanf("%d",&n);
printf("请输入您想转化的进制\n");
scanf("%d",&m);
conversion(n,m);
printf("为转化后的数");

}

  • 写回答

2条回答 默认 最新

  • ysuwood 2015-11-04 12:13
    关注

    编译没通过吧?错误比较多。

     typedef struct{
    SElemType *base; //应该是指针吧
    。。。
    (*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
    
    。。。
    (*S).base=(SElemType*)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
    。。。
    
    Status StackEmpty(SqStack *S){//判断栈是否为空
    。。。
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数