【正文】
/ 將棧頂元素轉(zhuǎn)化為整型的形式輸出 }int In(char c) //判斷C是否為運算符是返回1否則返回0{ char ch[7]={39。+39。,39。39。,39。*39。,39。/39。,39。39。,39。(39。,39。)39。}。 int i。 for(i = 0。 i 7。 i++) if(c == ch[i]) return 1。 return 0。 } char Proceed(char op,char c) //op為棧頂元素,c為當前讀入的運算符,比較二者的優(yōu)先級{ char ch。 if(op==39。(39。 amp。amp。 c==39。)39。 || op==39。39。 amp。amp。 c==39。39。 ) ch = 39。=39。 else if(op==39。+39。 || op==39。39。) /*棧頂元素為‘+’或‘’的時候*/ switch(c) { case 39。+39。: case 39。39。: case 39。)39。: case 39。39。: ch = 39。39。 break。 case 39。*39。: case 39。/39。: case 39。(39。: ch = 39。39。 } else if(op==39。*39。 || op==39。/39。) /*棧頂元素為‘*’或‘/’的時候*/ switch(c) { case 39。+39。: case 39。39。: case 39。*39。: case 39。/39。: case 39。)39。: case 39。39。: ch = 39。39。 break。 case 39。(39。: ch = 39。39。 } else if(op==39。(39。) /*棧頂元素為‘(’的時候*/ switch(c) { case 39。+39。: case 39。39。: case 39。*39。: case 39。/39。: case 39。(39。: ch = 39。39。 break。 case 39。39。: printf(\tError!沒有右括號!\n)。 exit(0)。 } else if(op==39。)39。) //棧頂元素為‘)’的時候 switch(c) { case 39。+39。: case 39。39。: case 39。*39。: case 39。/39。: case 39。39。: ch = 39。39。 break。 case 39。(39。: printf(\tError!括號匹配錯誤!\n)。 exit(0)。 } else if(op==39。39。) //棧頂元素為‘’的時候 switch(c) { case 39。+39。: case 39。39。: case 39。*39。: case 39。/39。: case 39。(39。: ch = 39。39。 break。 case 39。)39。: printf(\tError!沒有左括號!\n)。 exit(0)。 } return ch。 } int Operate(int a,char a1,int b) { int s。 int d1 = a。 int d2 = b。 //把字符ab變?yōu)閷獢?shù)字 switch(a1) { case 39。+39。: s = d1+d2。 break。 case 39。39。: s = d2d1。 break。 case 39。*39。: s = d1*d2。 break。 case 39。/39。: if(d1!=0) { s = d2/d1。} else {printf(\t除數(shù)不可以為0!\n)。 exit(0)。} } return (s+39。039。)。 //將運算結(jié)果轉(zhuǎn)化為ascii碼的形式入棧, }