题目描述 小明不擅长计算,但是作业总是要做的。 小明只会加法和乘法,但是他的记号和计算方法和常规的不同。加法用 "*" 表示,乘法用 "+" 表示,并且没有优先级,从左到右依次计算。具体可参考样例。 请你写个程序帮他完成作业。 输入 一行,一个长度不超过100的字符串,只包含 "0" 到 "9"、"+"、"*" 字符,表示一个算式。 输出 一个整数,表示算式的答案。数据保证计算结果不超过 10000 。
时间: 2024-02-11 21:07:59 浏览: 103
好的,问题已经记录下来了。那么针对你的问题,我可以给出以下代码实现:
```python
s = input()
res = 0
num = 0
op = "+"
for c in s:
if c.isdigit():
num = num * 10 + int(c)
else:
if op == "+":
res += num
else:
res *= num
num = 0
op = c
if op == "+":
res += num
else:
res *= num
print(res)
```
这个代码实现的思路是,用 `res` 变量来保存当前算式的结果,用 `num` 变量来保存当前处理的数字,用 `op` 变量来保存当前的操作符。然后遍历输入的字符串,如果遇到数字,则将其加入到 `num` 中;如果遇到操作符,则使用之前保存的 `op` 操作符对 `res` 和 `num` 进行计算,并更新 `op` 和 `num`。最后输出 `res` 即可。
相关问题
用c++解决这个问题:题目描述 小明不擅长计算,但是作业总是要做的。 小明只会加法和乘法,但是他的记号和计算方法和常规的不同。加法用 "" 表示,乘法用 "+" 表示,并且没有优先级,从左到右依次计算。具体可参考样例。 请你写个程序帮他完成作业。 输入 一行,一个长度不超过100的字符串,只包含 "0" 到 "9"、"+"、"" 字符,表示一个算式。 输出 一个整数,表示算式的答案。数据保证计算结果不超过 10000 。
好的,以下是使用 C++ 实现的代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
int res = 0;
int num = 0;
char op = '+';
for (char c : s) {
if (isdigit(c)) {
num = num * 10 + (c - '0');
} else {
if (op == '+') {
res += num;
} else {
res *= num;
}
num = 0;
op = c;
}
}
if (op == '+') {
res += num;
} else {
res *= num;
}
cout << res << endl;
return 0;
}
```
这个代码和 Python 的实现思路是一样的,区别在于使用了 C++ 的语法。比如,使用 `string` 来保存输入的字符串,使用 `cin` 来读取输入,使用 `cout` 来输出结果,等等。
阅读全文