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