0
已解决
张恩泽
高级天翼
高级天翼
2730 算术表达式 经验值:400
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
上面计算器的输入,你是不是觉得有些怪怪的?因为它不太符合我们地球人的表达习惯,我们算术表达式,其实是“中缀表达式”,即运算符在中间。但是外星人即不使用十进制,也不使用中缀表达式,他们还想请你编写一个可以直接计算算术表达式的程序。当然本着循序渐进的原则,只是计算包含加号的表达式。
输入描述 Input Description
一个加法表达式。
输出描述 Output Description
一个自然数x,表示表达式的值。
样例输入 Sample Input
1+2
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
数字不超过100
张恩泽在2020-10-19 18:00:30追加了内容
//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
string s;
int ans1, ans2;
int posf, posl;
int main() {
// freopen ("题目名.in", "r", stdin);
// freopen ("题目名.out", "w", stdout);
cin >> s;
s = " " + s + " ";
for (int i = 0; i < s.size(); i ++) {
if (s[i - 1] == ' ' && s[i] != ' ') {
posf = i;
}
if (s[i] != ' ' && s[i + 1] == '+') {
posl = i;
string tmp = s.substr(posf, posl - posf + 1); //截取第一个数字
for (int j = 0; j < tmp.size(); j ++) {
ans1 = ans1 * 10 + (tmp[j] - '0');
}
}
if (s[i - 1] == '+') {
posf = i;
}
if (s[i] != ' ' && s[i + 1] == ' ') {
posl = i;
string tmp = s.substr(posf, posl - posf + 1);//截取第二个数字
for (int j = 0; j < tmp.size(); j ++) {
ans2 = ans2 * 10 + (tmp[j] - '0');
}
}
}
cout << ans1 + ans2;
// fclose (stdin);
// fclose (stdout);
return 0;//好习惯!
}
//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
// freopen ("题目名.in", "r", stdin);
// freopen ("题目名.out", "w", stdout);
int a, b;
char s;
cin >> a >> s >> b;
cout << a + b;
// fclose (stdin);
// fclose (stdout);
return 0;//好习惯!
}
//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
// freopen ("题目名.in", "r", stdin);
// freopen ("题目名.out", "w", stdout);
double a, b;
char s;
cin >> a >> s >> b;
cout << a + b;
// fclose (stdin);
// fclose (stdout);
return 0;//好习惯!
}
以上3个代码都是20分,求大佬们找错!