看看这个程序哪里错了?? 一次进行一重运算,输入表达式以逆波兰式输入,如要进行“4+2”的运算,就输入“42+”!(引号不算) #include<stdio.h> #include<stdlib.h> #define MAX 40 int *p,*tos,*bos; void push(int i); int pop(void); int main() { char s[3]; int j=0,a,b; p=(int *)malloc(MAX*sizeof(int)); if(!p) { printf("Allocation Failure\n"); exit(1); } bos=p; tos=p+MAX-1; printf("Four Function Calculator\n"); printf("Enter 'q' to quit\n"); printf(":"); gets(s); do{ switch(s[j]) { case'+': { a=pop(); b=pop(); printf("%d\n",b+a); push(b+a); break; } case'-': { a=pop(); b=pop(); printf("%d\n",b-a); push(b-a); break; } case'*': { a=pop(); b=pop(); printf("%d\n",b*a); push(b*a); break; } case'/': { a=pop(); b=pop(); if(a==0) { printf("Divide by 0.\n"); break; } printf("%d\n",b/a); push(b/a); break; } default: push(s[j]);break; } j++; }while(s[j]!='\0'&&j<3); a=pop(); printf("Current value on the stack:%d\n",a); return 0; }
void push(int i) { if(p>tos){ printf("Stack Full\n"); return; } *p=i; p++; } int pop(void) { p--; if(p<bos){ printf("Stack Underflow\n"); return 0; } return *p; }