1樓:匿名使用者
剛好半年前有個類似的應用,當時我有個簡單的做法:
把+-*/^作為運算子,其中-+賦予優先值1,*/賦予優先值3,^賦予優先值4,0123456789.作為數字字元,()作為優先值附加項,其中(優先值5,)優先值-5。
然後通過查詢輸入中的運算子和()來分割字串,將數字和運算子分別排成佇列,根據運算子本身的優先值以及()的附加來計算每個運算子最後的優先值,然後優先值最高的運算子取其左右兩邊的數字先進行計算,得到的結果取代原兩個數字的位置,消去那個運算子,繼續尋找最高優先值的運算子進行計算直到沒有運算子出現。
當然啦,輸入校驗很重要一定要做好的
2樓:舒拔博士
這個說簡單也不簡單,因為需要涉及到將輸入的中綴表示式轉換成字尾表示式也就是逆波蘭表示式。這樣才好計算。
絕不只是轉換字串這麼簡單,你需要考慮運算子的優先順序還有加上括號的情形。
3樓:
#include " stdio.h"
main()}
4樓:
恩,演算法,貌似要用到棧,參考演算法與資料結構的書。
c語言問題,C語言問題
struct student拼寫成struct studnt了。拼寫錯誤 struct studnt沒有定義,所以無法執行sizeof。include typedef struct student int main c語言問題?嗯你的理解是對的,break就是用來跳出的switch,如果沒有brea...
c語言問題,c語言問題
首先你這個程式輸入個數是不可控的,n沒起到作用,因為你控制輸入的迴圈已經規定了i是從0到99,必須要輸入100個。而你這個 自認為統計總人數 的n n i,相當於n 1 2 3 那是不可能的。while xh i scanf d d xh i sg i n i sum sum sg i 用美元符號做...
c語言問題,C語言問題
if判斷句中,x 1 是真命題,所以x被賦值為1,y x,所以y被賦值為1。下一條語句,y y 1,所以y 2。所以x 1,y 2 c語言問題?這句迴圈的bai意義是從索引9開始du 向左遍歷元素,直到i j結束。zhi 整段代dao碼是接收鍵盤輸版入一個值,按大小順序插權入到陣列。第一個迴圈是從陣...