1樓:匿名使用者
算術表達抄式 求值的經典方法 就是把 中綴表示式轉化成 字尾表示式,演算法如下:
1,初始化一個空堆疊,將結果字串變數置空。
2,從左到右讀入中綴表示式,每次一個字元。
3,如果字元是運算元,將它新增到結果字串。
4,如果字元是個操作符,彈出(pop)操作符,直至遇見開括號(opening parenthesis)、優先順序較低的操作符或者同一優先順序的右結合符號。把這個操作符壓入(push)堆疊。
5,如果字元是個開括號,把它壓入堆疊。
6,如果字元是個閉括號(closing parenthesis),在遇見開括號前,彈出所有操作符,然後把它們新增到結果字串。
7,如果到達輸入字串的末尾,彈出所有操作符並新增到結果字串。
這個是 donald knuth 於 2023年 描述的.
比如 2+3*4+(2+3)*5 轉換成字尾表示式為: 234*+23+5*+
對字尾表示式求值 就不難了,
從左到右讀入字尾表示式
如果字元是一個運算元,把它壓入堆疊。
如果字元是個操作符,彈出兩個運算元,執行恰當操作,然後把結果壓入堆疊到字尾表示式末尾,從堆疊中彈出結果。
2樓:孫連濤
你可以自己寫個演算法去解析字串中的加減乘除括號等特殊字元,然後在計算。或者你寫個儲存過程,通過資料庫的計算機制來計算。
計算:(1)-2-5+19-13+1=______(2)12×(?56)×311÷114=______(3)17-8÷(-2)+4×(-3)=______(4
3樓:手機使用者
(1)-2-5+19-13+1,
=-7+19-12,
=0;(bai2)12×
du(?5
6)×3
11÷zhi114,
=-12×56
×311×45
,=-111;
(3)17-8÷(dao-2)+4×(-3),=17+4-12,
=9;(4)(-16+3
4-112)×
專48,=12
×48,
=24;
(5)(?2)
?|屬?7|?2×(?12),
=4-7+1,
=-2;
(6)?4
5×[(?1
2)÷(0.75?1)+(?2)
],=-4
5×(2-32),
=24.
在C語言裡,如何使用正規表示式拿到字串「L內容L」裡的「內容」
你是要解析xml檔案還是html檔案?看這種標籤可以用xml方式解析的。當然正則也可以。更簡單的就是兩次replace replace 按照你的要求編寫的程式如下 c 中如何取字串中指定的內容?string source d5 ca ba c5 84346333 0d 0a c3 dc c2 eb ...
用正規表示式怎樣匹配不包含特定字串的字串
為字串。另外列舉一些正規表示式的語法 abc a或b或c 任意單個字元 a?零個或一個a abc 任意不是abc的字元 s 空格 a 零個或多個a a z a z的任意字元 s 非空格 a 一個或多個a a za z 字串函式 string processing function 也叫字串處理函式,...
c語言中如何輸入輸出字串
在c語言中,輸入輸出字串有以下兩種方式 1 用scanf printf輸入輸出。scanf printf是c語言的格式化輸入輸出函式,可以用於輸入輸出各種基礎型別,字串 char 也 其支援範圍內。格式化字元為 s。定義char str 100 輸入scanf s str 輸出printf s st...