- 测试点四坑在于题干这句话题目保证每个计算至多只有 1 个运算符
- AC代码↓
#include <iostream>
#include <cmath>
#include <map>
using namespace std;
int main() {
string s[10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
map<string, int> mp;
for (int i = 0; i < 10; ++i) {
mp[s[i]] = i;
}
for (int i = 0; i < 11; ++i) {
string ss;
cin >> ss;
if (isdigit(ss[0])) {
int tag = 0;
for (int j = 0; j < ss.length(); ++j) {
if (!isdigit(ss[j])) {
tag = 1;
switch (ss[j]) {
case '+':
cout << stoi(ss.substr(0, j)) + stoi(ss.substr(j + 1));
break;
case '-':
cout << stoi(ss.substr(0, j)) - stoi(ss.substr(j + 1));
break;
case '*':
cout << stoi(ss.substr(0, j)) * stoi(ss.substr(j + 1));
break;
case '/':
cout << stoi(ss.substr(0, j)) / stoi(ss.substr(j + 1));
break;
case '%':
cout << stoi(ss.substr(0, j)) % stoi(ss.substr(j + 1));
break;
case '^':
cout << pow(stoi(ss.substr(0, j)), stoi(ss.substr(j + 1)));
break;
}
}
}
if (tag == 0) cout << ss;
} else {
if (ss.substr(0, 4) == "sqrt") {
int r = stoi(ss.substr(4));
cout << sqrt(r);
} else {
cout << mp[ss];
}
}
}
}