一个c++程序中一个输出值总是一段乱七八糟的数字,造成这样的原因有哪些?应该怎么修改

2025-04-18 08:04:31
推荐回答(1个)
回答1:

#include
#include
#include
#define ERROR 0
#define OK 1
#define maxStacksize 5
using namespace std;
typedef struct {
int *base;
int *top;
int stacksize;
}Sqstack;
int InitStack(Sqstack S)
{
S.base=(int *)malloc(maxStacksize*sizeof(int));
if(!S.base)
return ERROR;
S.top=S.base;
S.stacksize=5;
return OK;
}
int Getup(Sqstack S,int e)// 改成int Getup(Sqstack S,int& e)

{
if(S.top==S.base)
return ERROR;
e=*(S.top-1);
return e;

}
int push(Sqstack S,int e)
{
if(S.top-S.base>=maxStacksize)
return ERROR;
*S.top=e;
S.top++;
return OK;
}
int pop(Sqstack S,int e) // 改成int pop(Sqstack S,int& e)
{
if(S.top==S.base)
return ERROR;
e=*--S.top;
return e;
}
int main()
{
Sqstack S; //最好不用S和e,因为这是前面用到的局部变量
int e,m,i,n;
scanf("%d",&m);
int InitStack(Sqstack S); //好像可以不用这以下的4句了,前面已经申明了
int push(Sqstack S,int e);
int Getup(Sqstack S,int e);
int pop(Sqstack S,int e);
InitStack(S);
push(S,m);
Getup(S,n);
pop(S,e);
printf("%d",e);

return 0;

}