問題描述 輸入一個只包含加減乖除和括號的合法表達式,求表達式的值。其中除表示整除。輸入格式 輸入一行,包含一個表達式。輸出格式 輸出這個表達式的值。樣例輸入1-2+3*(4-5)樣例輸出-4數據規模和約定 表達式長度不超過100,表達式運算合法且運算過程都在int內進行。
2 回答
已采納

慕粉1529473653
TA貢獻8條經驗 獲得超2個贊
根據算術四則運算的規則:
?????????a. ?從左算到右
?????????b. 先乘除,后加減
?????????c. 先括號內,后括號外
得到算符優先表,作為計算表達式計算順序的依據。
如:q1為先來的算符,q2為后來的算符。如3+5+7,前面的+為q1,后面的+為q2,q1>q2。
算法思想
1.?設定兩棧:運算符棧,操作數棧;
2.??棧初始化:設操作數棧為空;運算符棧的棧底元素為表達式起始符‘#’;
3.??依次讀入字符:是操作數則入操作數棧,是運算符則要判斷其與運算符棧棧頂元素的優先級:
?????if 棧頂算符?>?運算符:則運算符棧出一算符,操作數棧出兩操作數,計算,結果壓入操作數棧;?
??????????運算符?= 棧頂算符:運算符棧出一算符與讀取到的算符抵消;
??????????棧頂算符?<?運算符:壓入算符棧。
4.??重復執行第3小點,直到讀取到‘#’號,與算符棧頂的‘#’相抵消,最后算符棧為空,操作數棧只有一數值,即為結果。
????編程的東西自己去練練手,實現的流程都在上面了
添加回答
舉報
0/150
提交
取消