#include<bits/stdc++.h> using namespace std; int calc(string s) { //操作类型 char op = s[0]; int startPos = 1,endPos = 1; //切割字符 vector<int> v; while (true) { endPos = s.find(' ', startPos+1); if (endPos == -1) { int temp = stoi(s.substr(startPos+1, s.length()-startPos-1)); v.push_back(temp); break; } else { int temp = stoi( s.substr(startPos, endPos-startPos)); v.push_back(temp); startPos = endPos; } } //计算结果 int res = v[0]; if (op == '+') { for (int i = 1; i < v.size(); i++) { res += v[i]; } } else if (op == '-') { for (int i = 1; i < v.size(); i++) { res -= v[i]; } } if (op == '*') { for (int i = 1; i < v.size(); i++) { res *= v[i]; } } if (op == '/') { for (int i = 1; i < v.size(); i++) { res /= v[i]; } } return res; } int main() { string s; getline(cin, s); int startPos = 0; int endPos = 0; int len = s.length(); for (int i = 0; i < len; ) { if (s[i] == '(') { startPos = i; i++; } else if(s[i]==')') { endPos = i; string temp = s.substr(startPos + 1, endPos - startPos - 1); //替换结果 int res = calc(temp); s.replace(startPos, endPos - startPos+1, to_string(res)); i = 0; len = s.length(); } else { i++; } } cout << s; return 0; } |
Double click to view unformatted code.