Ⅰ 用c語言做個簡單的計算器 要有加減乘除 先乘後加 先算括弧里的
簡單的表達式求值,不追求效率的話不需要使用堆棧之類的專業演算法,只需要遞歸演算法就足夠了:
1.首先編寫遞歸計算沒有括弧的字元串表達式函數。
演算法:從頭到尾按運算符優先順序次序依次搜索運算符,在這里先搜索乘除符號再搜索加減符號,同優先順序的符號則先遇到誰就處理誰,比如先查找乘除運算符,一旦遇到乘或除運算符,就根據運算符的運算規則依次讀取操作數進行運算,運算完畢將結果轉換成字元串再放回表達式中將本次運算所涉及到的部分覆蓋掉,然後繼續向後查找並處理乘或除運算符直到結尾,本次處理完畢。按此方式再從頭到尾處理加減運算符。如果某次搜索未遇到運算符則表明表達式處理完畢,這時表達式中應該就只有一個數了。
2.編寫處理帶括弧的表達式函數。
方法:從頭到尾搜索右括弧,找到後再向前找左括弧,於是找到表達式中最內層的括弧,調用上面的子函數計算其值,用其覆蓋所處理的括弧部分,本過程遞歸執行直到沒有找到右括弧為止,表達式計算完畢。
Ⅱ a+b+c*(d+e)在c語言中應該先算哪一個再算哪一個
這個表達式的實際運算順序是這樣的:先算括弧裡面的d+e,再算c與前面的結果的乘積,可記為s1,然後再算a+b,可記為s2,最後計算s1與s2的和,並將它作為整個表達式的運算結果。
Ⅲ C語言中後加加和前加加什麼意思
前加加,代表著先運算,後加一,後加加,代表先加一,再進行運算
Ⅳ c語言先算+還是*
先b*c,乘除優先於加減
優先順序 運算符 名稱或含義 使用形式 結合方向 說明
1 [] 數組下標 數組名[常量表達式] 左到右
() 圓括弧 (表達式)/函數名(形參表)
. 成員選擇(對象) 對象.成員名
-> 成員選擇(指針) 對象指針->成員名
2 - 負號運算符 -表達式 右到左 單目運算符
(類型) 強制類型轉換 (數據類型)表達式
++ 自增運算符 ++變數名/變數名++ 單目運算符
-- 自減運算符 --變數名/變數名-- 單目運算符
* 取值運算符 *指針變數 單目運算符
& 取地址運算符 &變數名 單目運算符
! 邏輯非運算符 !表達式 單目運算符
~ 按位取反運算符 ~表達式 單目運算符
sizeof 長度運算符 sizeof(表達式)
3 / 除 表達式/表達式 左到右 雙目運算符
* 乘 表達式*表達式 雙目運算符
% 余數(取模) 整型表達式/整型表達式 雙目運算符
4 + 加 表達式+表達式 左到右 雙目運算符
- 減 表達式-表達式 雙目運算符
5 << 左移 變數<<表達式 左到右 雙目運算符
>> 右移 變數>>表達式 雙目運算符
6 > 大於 表達式>表達式 左到右 雙目運算符
>= 大於等於 表達式>=表達式 雙目運算符
< 小於 表達式<表達式 雙目運算符
<= 小於等於 表達式<=表達式 雙目運算符
7 == 等於 表達式==表達式 左到右 雙目運算符
!= 不等於 表達式!= 表達式 雙目運算符
8 & 按位與 表達式&表達式 左到右 雙目運算符
9 ^ 按位異或 表達式^表達式 左到右 雙目運算符
10 | 按位或 表達式|表達式 左到右 雙目運算符
11 && 邏輯與 表達式&&表達式 左到右 雙目運算符
12 || 邏輯或 表達式||表達式 左到右 雙目運算符
13 ?: 條件運算符 表達式1? 表達式2: 表達式3 右到左 三目運算符
14 = 賦值運算符 變數=表達式 右到左
/= 除後賦值 變數/=表達式
*= 乘後賦值 變數*=表達式
%= 取模後賦值 變數%=表達式
+= 加後賦值 變數+=表達式
-= 減後賦值 變數-=表達式
<<= 左移後賦值 變數<<=表達式
>>= 右移後賦值 變數>>=表達式
&= 按位與後賦值 變數&=表達式
^= 按位異或後賦值 變數^=表達式
|= 按位或後賦值 變數|=表達式
15 , 逗號運算符 表達式,表達式,… 左到右 從左向右順序運算
說明:
同一優先順序的運算符,運算次序由結合方向所決定。
簡單記就是:! > 算術運算符 > 關系運算符 > && > || > 賦值運算符
參考自:http://..com/question/355007268.html
你可以看下網路經驗的這篇:http://jingyan..com/article/455a9950e3dfe5a16727785d.html
Ⅳ 怎樣記住c語言運算符優先順序有什麼秘訣
要了解c語言運算符優先順序高低就先從通常數學上運算優先順序高低說起。
通常,一個數學算式里如果有加減乘除和括弧,我們會先算括弧裡面的式子,再算括弧外面的乘除再然後才是加減。那麼這時候我們說括弧的優先順序比加減乘除的要高,所以我們就先計算括弧里的式子。然後是乘除,再然後才是加減。其中加減乘除就是運算符。所以運算符的高低決定了運算的先後順序。
同理。c語言中的運算優先順序和這一個樣,只要你把運算符的優先順序記住就可以了。
Ⅵ 有關C語言前加加後後加加的問題
a=10;
b=a++;
c=++a;
=======
上述表達式等價於:
a=10;
b=a;
a=a+1;
a=a+1;
c=a;
=============
結果是
a=12
b=10
c=12
Ⅶ c語言if括弧內怎樣先加減後乘除
if ((a+b)*c >= d)
if的括弧裡面再加括弧是沒有問題的,方式就像是數學裡面的那種一樣,不過這個算數判斷語句要用一對小括弧括起來,這一對括弧是if需要的。
Ⅷ c語言中,a+(b++),會先計算b++再計算a+b么
不是,b++是先算後加,++B是先加後算,a+(b++)就等同於:a+b,b+1.