簡單四則運算 華為2011機試題

2021-06-18 12:43:07 字數 1090 閱讀 1071

這次的題目很簡單,但是我看到網上很多人用棧實現,並且在我印象中資料結構書上用的也是棧,我個人覺得棧和佇列結合著用方法更加,**簡潔明瞭,很短很精悍。該題沒有要求加上括號,但是如果棧和佇列結合著用即使加上括號也是很方便計算的。

問題描述:

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

注: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

//分析可知,只有四則運算,所以*,/優先順序高可直接運算,+-優先順序低可最後運算

#include #include using namespace std;

int calculate(int len,char *expstr)

else

}int result = *data.begin()-'0';

for(vector::iterator p = data.begin()+1;p != data.end();++p)

else if(*p == '-')

result -= *++p-'0';

} return result;

}int main(int argc, char* argv)

{ char a = "8/3*3";

cout<

華為機試簡單四則運算

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

華為機試 四則運算

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

四則運算 華為機試 C C

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