问题遇到的现象和发生背景
进制转换
用代码块功能插入代码,请勿粘贴截图
//SqStack.h
#define MAXSIZE 100
#define FALSE 0 //函数结果状态代码
#define TRUE 1
#define OVERFLOW -2
#define OK 1
#define INFEASIBLE -1
#define ERROR 0
typedef int SElemType;
typedef bool Status;
typedef struct{
SElemType *base; //栈底指针
SElemType *top; //栈顶指针
int stacksize; //栈可用最大容量
}SqStack;
Status InitSqStack(SqStack S); //初始化
Status pop(SqStack &S,int &e); //出栈操作
Status Push(SqStack &S,int e); //入栈操作
// SqStack.cpp
#include"SqStack.h"
#include<stdlib.h>
Status InitSqStack(SqStack S) //初始化
{
S.base=(SElemType*)malloc(MAXSIZE*sizeof(SElemType)); //S.base=new SElemType[MAXSIZE];
if(!S.base) exit(OVERFLOW);
S.base=S.top;
S.stacksize=MAXSIZE;
return OK;
}
Status Push(SqStack &S,int e) //入栈操作
{ if(S.top-S.base==S.stacksize) //栈满
return ERROR;
else
*S.top++=e;
return OK;
}
Status pop(SqStack &S,int &e) //出栈操作
{
if(S.top==S.base) //栈空
return ERROR;
else
e=*--S.top;
return OK;
}
//main.cpp
#include<stdio.h>
#include"SqStack.h"
int main()
{ int N,d,i=0,j,e;
SqStack S;
if(InitSqStack(S))
printf("初始化成功!\n");
else
printf("初始化失败!\n");
printf("十进制数N=");scanf("%d",&N);printf("\n");
printf("要转换的进制d=");scanf("%d",&d);printf("\n");
while(N)
{
Push(S,N%d);
++i;
N=N/d;
}
for(j=i;j>=1;j--)
{
pop(S,e);
printf("%d转换为%d进制=%d",N,d,e);
}
return 0;
}
运行结果及报错内容
我想要达到的结果
运行那个Push函数