1. 程式人生 > >《C語言實戰105例》12例--簡單的計算器

《C語言實戰105例》12例--簡單的計算器

實現一個可計算不同優先順序的四則運算的簡單運算子。

採用遞迴演算法來實現計算過程。首先將一個四則運算表示式分為幾個不同級別的表示式進行計算,最後算出結果。

函式low()計算優先順序最低的表示式,如:+-運算;函式mid()計算中等的表示式,如*/運算;high()計算優先順序最高的表示式()。

在各個計算函式中,又遞迴的呼叫其他函式來計算。這種方法叫做遞迴下降法,就算從最複雜的部分開始,逐步細化,知道表示式可以計算為止。

-------------------------------------------------------------------------------------------------------------------------------------------------------------

誰能仔細解釋一下這個c語言遞迴法四則運算的原理? #include <stdio.h> #incl_百度知道 https://zhidao.baidu.com/question/1431564324788337379.html

無論什麼表示式都可以看成三部分,左表示式,運算子,右表示式,只要確定左右表示式的值,那麼整個表示式的值都可以求出。 也就是先計算出左邊的,然後計算出右邊的,然後再運算,結果就出來了 1.如果運算子為+-,那麼就兩邊就按照先括號,再乘除來運算獲得結果,然後+-運算即可。 2.如果運算子為*/,那麼就兩邊就按照先括號來運算,然後*/運算即可。 3.上述兩步中如果遇到括號,那麼括號裡面的表示式處理步驟和1,2一樣,可以遞迴處理。 至此,問題全部得到解決。 流程如下: 先輸入的為左表示式,如果是數字,接著輸入運算子,然後返回, 如果是左括號,直接計算表示式,即第3步 然後遇到運算子,然後輸入右表示式,右表示式運算和左表示式運算一樣, 最後按照1或2來運算。 int exp( void ) { int temp = term(); //獲得左表示式的值 while(( token == '+' ) || ( token == '-' )) switch( token ) { case '+': match('+'); /*加法*/ temp += term();//獲得右表示式的值,然後相加 break; case '-': match('-'); temp -= term(); //獲得右表示式的值,然後相減 break; } return temp;//返回整個表示式的值 } term函式也是同樣原理。