直接上代码:

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
    map<string, char> mStr = {
        {"abc", '2'},
        {"def", '3'},
        {"ghi", '4'},
        {"jkl", '5'},
        {"mno", '6'},
        {"pqrs", '7'},
        {"tuv", '8'},
        {"wxyz", '9'},
    };
    
    string str;
    while (cin >> str) {
        string tmpstr;
        for (int i = 0; i < str.length(); i++) {
            if (str[i] >= 'A' && str[i] < 'Z') {
                tmpstr += str[i] + 32 + 1;
            } else if (str[i] == 'Z') {
                tmpstr += 'a';
            } else if (str[i] >= 'a' && str[i] <= 'z') {
                for (auto it : mStr) {
                    if (it.first.find(str[i]) != it.first.npos) {
                        tmpstr += it.second;
                        break;
                    }
                }
            } else {
                tmpstr += str[i];
            }
        }
        cout <<  tmpstr << endl;
    }
    return 0;
}