華為機試 四則運算(陣列解決)

2021-06-27 20:53:26 字數 1550 閱讀 8572

題目:四則運算

問題描述:

輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值

注:3.1、表示式只含 +, -, *, / 四則運算符,不含括號

3.2、表示式數值只包含個位整數(0-9),且不會出現0作為除數的情況

3.3、要考慮加減乘除按通常四則運算規定的計算優先順序

3.4、除法用整數除法,即僅保留除法運算結果的整數部分。比如8/3=2。輸入表示式保證無0作為除數情況發生

3.5、輸入字串一定是符合題意合法的表示式,其中只包括數字字元和四則運算符字元,除此之外不含其它任何字元,不會出現計算溢位情況

要求實現函式:

int calculate(int len,char *expstr)

【輸入】 int len: 字串長度;char *expstr: 表示式字串;

【輸出】 無

【返回】 計算結果

示例:

1)輸入:char *expstr = 「1+4*5-8/3」

函式返回:19

2)輸入:char *expstr = 「8/3*3」

函式返回:6

問題分析:

題目要求很簡單,只是計算個位數的四則運算,且沒有括號。主要考察棧的運用,實現時採用兩個輔助棧,乙個用來存放運算元,乙個用來存放操作符。根據操作符的優先順序進行計算。這個題目在嚴蔚敏《資料結構》這本書將棧的時候詳細介紹了實現過程。

基本思路:

兩個陣列分別儲存運算元和操作符,掃瞄輸入的字串,當遇到*和/的時候,邊計算邊儲存,將計算結果存到運算元的陣列中,當遇到+和-號時只儲存不計算。當所有資料儲存完畢後,因為運算就只剩下+-運算了,因為+-符合交換原則,所以用類似於棧的方式,從陣列末尾開始運算,同時每次將運算結果儲存運算元的陣列中,最後四則運算的結果就是運算元的陣列中剩下的那個。

具體實現:

華為機試 四則運算

題目 四則運算 問題描述 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值 注 3.1 表示式只含 四則運算符,不含括號 3.2 表示式數值只包含個位整數 0 9 且不會出現0作為除數的情況 3.3 要考慮加減乘除按通常四則運算規定的計算優先順序 3.4 除法用整數除法,即僅保留除法...

華為機試簡單四則運算

簡單四則運算 問題描述 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值 注 1 表示式只含 四則運算符,不含括號 2 表示式數值只包含個位整數 0 9 且不會出現0作為除數的情況 3 要考慮加減乘除按通常四則運算規定的計算優先順序 4 除法用整數除法,即僅保留除法運算結果的整數部分...

四則運算 華為機試 C C

請實現如下介面 功能 四則運算 輸入 strexpression 字串格式的算術表示式,如 3 2 返回 算術表示式的計算結果 publicstaticintcalculate string strexpression 請實現 return0 約束 pucexpression字串中的有效字元包括 0...