我想用push和pop设计一个RPN计算器。但是在运行程序后我没有得到正确的结果。在我使用pop()从堆栈中获取a和b的值之后,似乎c和d都存储了0。有什么建议?
#include <stdio.h>
int stack[50];
int first = 0;
int main(void){
int a,b,c,d,e;
char opr[4];
printf("Enter 2 numbers \n");
scanf("%d",&a);
scanf("%d",&b);
void push(int x); // Calling the push function
int pop(); // Calling the pop function
push(a);
push(b);
printf("Enter the operator \n");
scanf("%s",&opr[4]);
switch(opr[4]){
case '+': c=pop(); d=pop(); e=c+d; break;
case '-': c=pop(); d=pop(); e=c-d; break;
case '*': c=pop(); d=pop(); e=c*d; break;
case '/': c=pop(); d=pop(); e=c/d; break;
default: printf("not a valid option");
}
push(e);
printf("%d",e);
printf("%d",stack[50]);
return 0;
}
void push(int x){
if(first==50){
printf("The stack is full");
}else{
x = stack[first];
first++;
}
}
int pop(){
int y;
if(first == 0){
printf("Stack is empty ");
}else{
first--;
y = stack[first];
return y;
}
}