#include <iostream> #include "string" #include "vector" using namespace std; /** * kkmd66 四刷 * @param number_char * @param number_str * @param temp * @return */ char isEnglish(const vector<char> &number_char, const vector<string> &number_str, const string &temp) { //找是否是英文 for (int i = 0; i < number_str.size(); ++i) { //是英文 if (number_str[i] == temp) { return number_char[i]; } } //不是英文 return '#'; } /** * kkmd66 四刷 * @return */ int main() { vector<char> number_char{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; vector<string> number_str{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; int T; cin >> T; while (T--) { //何种方式输出 int flag_out; cin >> flag_out; //最终加数,最终结果 int plus_1_int, plus_2_int, result; //temp临时接收,plus_1_str第一个加数,plus_2_str第二个加数 string temp, plus_1_str, plus_2_str; //第一个加数 while (cin >> temp && temp != "+") { char flag_english = isEnglish(number_char, number_str, temp); //如果是英文 if (flag_english != '#') { plus_1_str += flag_english; }//不是英文 else { plus_1_str = temp; } } plus_1_int = atoi(plus_1_str.c_str()); //第二个加数 while (cin >> temp && temp != "=") { char flag_english = isEnglish(number_char, number_str, temp); //如果是英文 if (flag_english != '#') { plus_2_str += flag_english; }//不是英文 else { plus_2_str = temp; } } plus_2_int = atoi(plus_2_str.c_str()); //结果 result = plus_1_int + plus_2_int; //输出 if (flag_out) { //是英文 string result_str = to_string(result); //依次找result_str每一个数字匹配的英文 for (int i = 0; i < result_str.size(); ++i) { for (int j = 0; j < number_char.size(); ++j) { //找到相同的字符 if (result_str[i] == number_char[j]) { //不是最后一个(不换行) if (i != result_str.size() - 1) cout << number_str[j] << " "; //最后一个换行 else cout << number_str[j] << endl; //找到直接打断 break; } } } //输出数字 } else cout << result << endl; } return 0; } |
Double click to view unformatted code.