1樓:菸捲不抽菸
lz應該知道棧這個東西吧。這道題可以利用兩個棧來完成計算任務。棧a用來存放數字,棧b用來存放運算子。設定好乘除和加減的優先順序關係就可以做了。
流程圖這裡不好畫,我把執行過程寫出來給你看吧。
用一個指標p順序採集輸入字串。在p指向運算子的時候根據優先順序確定是否計算。
例: input: a + b * c - d1. p指向a。操作:入棧a
stacka: a
stackb: 空
2. p指向+。操作:入棧b
stacka: a
stackb: +
3. p指向b。操作:入棧a
stacka: a b
stackb: +
4. p指向*。因*的優先順序比+大,故暫不計算加法。操作:入棧b。
stacka: a b
stackb: + *
5. p指向c。操作:入棧a
stacka: a b c
stackb: + *
6. p指向-。因-的優先順序比*小,故應在這裡進行計算。操作:出棧計算。
stacka: a
stackb: +
a棧提出了b和c,b棧提出了*號,計算ans = b * c。
繼續判斷,因+的優先順序與+相同,因此繼續計算。操作:出棧計算。
stacka: 空
stackb: 空
a棧提出a,b棧提出+號,計算ans = a + ans此時a棧已空,將ans入棧a,-入棧b。
stacka: ans
stackb: -
7. p指向d。操作:入棧a
stacka: ans d
stackb: -
8. p到達字串尾。操作:出棧。
stacka: 空
stackb: 空
a棧提出了ans和d,b棧提出了-號。
計算:ans = ans - d
計算完成。
寫程式的時候一定要注意優先順序的設定和判斷條件。
2樓:
我覺得lz本意不是這樣的吧
應該是輸入的時候直接是 a+b*c 這樣一個字串輸入的要做的應該是讀入字串 然後將字串裡面進行分離出來這個編譯原理課有一個基本相似的程式,不過比這個複雜的多,那個程式是不限定多少個運算量和運算子的
求c語言程式設計答案
3樓:李_嵐峰
指向問兩位是哪個學校的或許我們是校友! **都差不多哈哈哈。。。
4樓:匿名使用者
這麼多 竟然不給分 你也太不人道了吧
5樓:釗悟泥迎波
1、由兩個函式構成,分別為主函式:main()和自定義函式add()2、呼叫的系統函式為:scanf(),printf();
3、用到的保留字有:int,return
4、使用者自定義標示符有:x,y,z,a,b,c
求c語言程式設計答案
6樓:匿名使用者
1、由兩個函式構成,分別為主函式:main()和自定義函式add()2、呼叫的系統函式為:scanf(),printf();
3、用到的保留字有:int,return
4、使用者自定義標示符有:x,y,z,a,b,c
7樓:與子如初見
總共由4個函式構成,呼叫了scanf函式,printf函式兩個系統函式,保留字用到了int,使用者自定義識別符號有:a,b,c,x,y,z.add。
c語言程式設計 ,高分求 答案!!!
8樓:趕潮飛魚
這個地址就是回答
急求c語言程式設計作業答案!!謝謝,急求C語言程式設計作業答案!!謝謝!
include void main printf 陣列中除最大值外其餘所有的值得和為 d n sum 給你一份偽 int main 定義儲存資料的陣列和數字個數變數 int ncount,nsum 0,nmax 0 int nnum 1000 從檔案裡讀取ncount值 fsscanf d ncou...
C語言程式執行結果題,求答案,C語言程式設計題求答案!謝謝!
20 0 3,5這是語法錯誤之題,不做 sum 13 會產生編譯警告11 開啟自己電腦試試不就知道了?當然你要知道他是幹什麼的命令,如果是對電腦不利的命令最好不要試,不然電腦會壞的。既然是題目,應該都是一些測試累的題,拿電腦試試沒關係的。c語言程式設計題求答案!謝謝!void main 來int a...
求幾道C 程式設計題答案,謝謝了,求大神解答這道C 程式設計題,謝謝 (我剛開始學,很多基礎題都不會做,求幫忙解答)
第一題 include include using namespace std bool prime int m int changp int m int main int argc,char argv int greatestcommondivisor int m,int n return b 求...