[编程题] 奇怪的表达式求值
时间限制:1秒
空间限制:32768K
常规的表达式求值,我们都会根据计算的优先级来计算。比如*/的优先级就高于+-。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+, - 和 *)。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值为多少
输入描述:
输入为一行字符串,即一个表达式。其中运算符只有-,+,*。参与计算的数字只有0~9. 保证表达式都是合法的,排列规则如样例所示。
输出描述:
输出一个数,即表达式的值
输入例子:
3+5*7
输出例子:
56
解题思路:本题就按照输入的字符顺序进行计算即可,result = int(a[0] - '0'),然后定义字符tmp存储计算符,执行相应的运算,直到最后一个,每次计算完i++,目的跳过取的那个数字
注意点:注意字符要转成数字,否则结果不对。例int(a[0] - '0')
注意点:注意字符要转成数字,否则结果不对。例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 }