描述: 給定乙個以字串形式表示的算術表示式,計算該表示式的值。
表示式支援如下運算:「+、-、*、/」,其中「*」和「/」的優先順序要高於「+」和「-」;
不需要考慮括號,且表示式之間沒有空格;
例如:對於表示式"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個字元 如果檔名不同,而只是檔名的後...