1 #include<stdio.h>
 2 #define MAXSIZE 100
 3
4
5 double Caculate(double a,char Op,double b) //计算功能函数 6 { 7 if(Op=='+') 8 return a+b; 9 if(Op=='-') 10 return a-b; 11 if(Op=='*') 12 return a*b; 13 if(Op=='/') 14 { 15 if(b==0) 16 { 17 printf("ERROR"); 18 return 0; 19 } 20 else 21 return a/b; 22 23 } 24 } 25 26 27 double Com(char data[]) //计算后缀表达式值的函数 28 { 29 int i; 30 double a,b,c; 31 char Op; 32 double stack[MAXSIZE]; //构造了一个栈 33 int top=-1; //top为栈顶指针 34 for(i=0;data[i]!='\0';++i) 35 { 36 if(data[i]>='0'&&data[i]<='9') 37 stack[++top]=data[i]-'0'; 38 else 39 { 40 Op=data[i]; 41 b=stack[top--]; 42 a=stack[top--]; 43 c=Caculate(a,Op,b); 44 stack[++top]=c; 45 } 46 } 47 return stack[top]; 48 } 49 50 51 int main() //测试结果正确与否 52 { 53 double a; 54 char data[MAXSIZE]="1234*++2/"; 55 a=Com(data); 56 printf("%f",a); 57 } 58