题目
分析
这道题目,在确定运算符后进行分支判定和计算不烦,稍微烦一点的是根据第一个数据的数据判定:
- 还要两个运算的数字
- 还是继续之前的运算,并再读入一个数字
所以,核心代码就是:
for (int j = 0; j < i; j++)
{
string input;
int a, b;
// 读取第一个输入
cin >> input;
// 判断是否为运算符
if (input == "a" || input == "b" || input == "c")
{
op = input[0]; // 更新运算类型
cin >> a >> b; // 读取两个运算数
}
else
{
// 如果不是运算符,则使用上一次的运算类型
a = stoi(input);
cin >> b;
}
...
}
第一个input可能是一个字符,也可能是一个数字。所以为了最大的兼容性,我们用string来代表。如果是a|b|c,那么就用input[0]将其变成字符并更新操作类型(+-\*),然后继续读入两个数字;如果不是运算符,那么用stoi将其转化为第一个运算数,并再读入一个运算数。
然后是根据op(运算类型)来执行相应的计算,并输出整个表达式的长度。
请注意,我们需要构造出这个表达式。
答案

思考
(略)
