
最难的就是 sqrt 的处理必须使用 substr必须使用 stoistoi只能处理字符串不能处理字符。因为 sqrt 后面有可能是两位数。#includebits/stdc.h using namespace std; int num(string s3) { int sum 0; for(int i 0; i s3.size(); i ) sum sum * 10 s3[i] - 0; return sum; } int main() { string s, s1, s2; int j 0; mapstring, int mapp {{ling, 0}, {yi, 1}, {er, 2}, {san, 3}, {si, 4}, {wu, 5}, {liu, 6}, {qi, 7},{ba, 8}, {jiu, 9}}; for(int i 0; i 11; i ) { getline(cin, s); if(s[0] s s[1] q) cout sqrt(stoi(s.substr(4)) ); else if(isalpha(s[0])) cout mapp[s]; else if(s.size() 1) cout s; else { for(j 0; j s.size(); j ) { if(!isdigit(s[j])) { s1 s.substr(0, j); s2 s.substr(j 1); break; } } if(s[j] ) cout num(s1) num(s2); if(s[j] -) cout num(s1) - num(s2); if(s[j] *) cout num(s1) * num(s2); if(s[j] /) cout num(s1) / num(s2); if(s[j] %) cout num(s1) % num(s2); if(s[j] ^) cout pow(num(s1), num(s2)); } } return 0; }