上機試題1

2021-07-04 08:45:08 字數 899 閱讀 1431

描述: 給定乙個以字串形式表示的算術表示式,計算該表示式的值。

表示式支援如下運算:「+、-、*、/」,其中「*」和「/」的優先順序要高於「+」和「-」;

不需要考慮括號,且表示式之間沒有空格;

例如:對於表示式"3-2+15*2",該表示式值為31.

執行時間限制: 60 sec 

記憶體限制: 256 mbyte 

輸入: 加減乘除四則運算表示式,長度不超過1024位元組,表示式中不含有括號和空格。

輸出: 表示式的運算結果。

樣例輸入: 3-2+15*2

樣例輸出: 31

利用兩個棧,乙個資料棧,乙個操作符棧,當遇到'+','-','*'的時候,考慮操作符棧頂元素的優先順序,然後做相應運算,最後把運算子入棧完之後,將出棧乙個運算子,對應出棧兩個資料,做相應的運算,運算結果入棧。

bool priority(char x, char y)

int calculate(int x, int y, char z)

}void main()

datast.push(data);

if (i >= strlen(str))

break;

if ((str[i] == '+' || str[i] == '-'))

}opera.push(str[i]);

} else

{ if ((str[i] == '*' || str[i] == '/')&&!opera.empty())

{c = str[i];

if (priority(opera.top(), str[i]))

{data = 0;

i++;

while (str[i] >= '0'&&str[i] <= '9'&&i

上機1注意

對陣列中每乙個元素賦相同的值 memset 陣列名,值,sizeof 陣列名 使用賦 0 或 1 memset a,1,sizeof a fill algorithm 賦任何值 fill a,a 5,233 字元陣列輸入輸出 1 輸入scanf 輸出printf 以空格結束 char str 10 ...

2011華為上機機試題

1.輸入乙個表示式,3 8 7 2,沒有括號 輸出結果 publicintgetmyret string str 處理乘除法 while mflag else mflag true mystr i 1 integer.tostring ret for intj i j looplen 2 j loo...

華為2016上機筆試題

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1.記錄最多8條錯誤記錄,對相同的錯誤記錄 即檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 檔案所在的目錄不同,檔名和行號相同也要合併 2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 如果檔名不同,而只是檔名的後...