8、奇怪的表达式求值--2017网易春招
生活随笔
收集整理的這篇文章主要介紹了
8、奇怪的表达式求值--2017网易春招
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[編程題] 奇怪的表達式求值 時間限制:1秒 空間限制:32768K 常規的表達式求值,我們都會根據計算的優先級來計算。比如*/的優先級就高于+-。但是小易所生活的世界的表達式規則很簡單,從左往右依次計算即可,而且小易所在的世界沒有除法,意味著表達式中沒有/,只有(+, - 和 *)。現在給出一個表達式,需要你幫忙計算出小易所在的世界這個表達式的值為多少? 輸入描述: 輸入為一行字符串,即一個表達式。其中運算符只有-,+,*。參與計算的數字只有0~9. 保證表達式都是合法的,排列規則如樣例所示。 輸出描述: 輸出一個數,即表達式的值 輸入例子: 3+5*7 輸出例子: 56 解題思路:本題就按照輸入的字符順序進行計算即可,result = int(a[0] - '0'),然后定義字符tmp存儲計算符,執行相應的運算,直到最后一個,每次計算完i++,目的跳過取的那個數字
注意點:注意字符要轉成數字,否則結果不對。例int(a[0] - '0')
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 string a; 8 while(cin>>a) 9 { 10 int n = a.size(); 11 int result = int(a[0] - '0'); 12 13 for(int i=1;i<n;i++) 14 { 15 char tmp = a[i]; 16 if(tmp == '+') 17 { 18 result += int(a[i+1] - '0'); 19 } 20 else if(tmp == '-') 21 { 22 result -= int(a[i+1] - '0'); 23 } 24 else if(tmp == '*') 25 { 26 result *= int(a[i+1] - '0'); 27 } 28 else 29 { 30 result /= int(a[i+1] - '0'); 31 } 32 i++; 33 } 34 cout<<result<<endl; 35 36 } 37 return 0; 38 }
注意點:注意字符要轉成數字,否則結果不對。例int(a[0] - '0')
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 string a; 8 while(cin>>a) 9 { 10 int n = a.size(); 11 int result = int(a[0] - '0'); 12 13 for(int i=1;i<n;i++) 14 { 15 char tmp = a[i]; 16 if(tmp == '+') 17 { 18 result += int(a[i+1] - '0'); 19 } 20 else if(tmp == '-') 21 { 22 result -= int(a[i+1] - '0'); 23 } 24 else if(tmp == '*') 25 { 26 result *= int(a[i+1] - '0'); 27 } 28 else 29 { 30 result /= int(a[i+1] - '0'); 31 } 32 i++; 33 } 34 cout<<result<<endl; 35 36 } 37 return 0; 38 }
?
轉載于:https://www.cnblogs.com/qqky/p/6922736.html
總結
以上是生活随笔為你收集整理的8、奇怪的表达式求值--2017网易春招的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下配置vsftpd虚拟用户为登
- 下一篇: linux系统创建windows启动盘