水题一枚。
题目大意:按照题目要求将所给单词转化为复数形式。
View Code
1 #include <iostream> 2 #include <map> 3 #include <cstring> 4 5 using namespace std; 6 7 int main() 8 { 9 map<string, string>M; 10 map<char, int>S; 11 int l,n; 12 S['a'] = 1, S['e'] = 1; 13 S['i'] = 1, S['o'] = 1, S['u'] = 1; 14 string s[102]; 15 string a, b; 16 while (cin >> l >> n) 17 { 18 M.clear(); 19 while (l--) 20 { 21 cin >> a >> b; 22 M[a] = b; 23 } 24 for (int i = 0;i < n;i++) 25 { 26 cin >> s[i]; 27 if (M.find(s[i]) != M.end()) s[i] = M[s[i]]; 28 else 29 { 30 int len = s[i].length(); 31 switch (s[i][len - 1]) 32 { 33 case 'y': if (len > 1 && (S.find(s[i][len - 2])) == S.end()) s[i][len - 1] = 'i', s[i] += "es"; 34 else s[i] += "s";break; 35 case 'o': 36 case 's': 37 case 'x':s[i] += "es";break; 38 case 'h': if (len > 1 && (s[i][len - 2] == 'c' || s[i][len - 2] == 's')) 39 s[i] += "es"; 40 else s[i] += "s";break; 41 default:s[i] += "s";break; 42 } 43 } 44 } 45 for (int i = 0;i < n;i++) cout << s[i] << endl; 46 } 47 return 0; 48 }

浙公网安备 33010602011771号