网易2017春招笔试——奇怪的表达式求值

奇怪的表达式求值

题目

常规的表达式求值,我们都会根据计算的优先级来计算。比如/的优先级就高于+-。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+, - 和 )。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值为多少

输入描述:

输入为一行字符串,即一个表达式。其中运算符只有-,+,*。参与计算的数字只有0~9.
保证表达式都是合法的,排列规则如样例所示。

输出描述:

输出一个数,即表达式的值

输入例子:

3+5*7

输出例子:

56


代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <string>
using namespace std;
bool isNumber(char c) {
return c >= '0' && c <= '9';
}
int main() {
string s;
cin >> s;
int num = 0, ans = 0;
char op = '+';
for (int i = 0; i < s.length(); i++) {
if (isNumber(s[i])) {
num = num * 10 + s[i] - '0';
}
else {
if (op == '+') ans = ans + num;
else if (op == '*') ans = ans * num;
else ans = ans - num;
op = s[i];
num = 0;
}
}
if (op == '+') ans = ans + num;
else if (op == '*') ans = ans * num;
else ans = ans - num;
cout << ans << endl;
return 0;
}
------本文结束感谢阅读------