#include<iostream>
#include<string>

using namespace std;

//与上一题非常相似
//但可以用另外一种方式来求解这类循环平移的问题
//对字母执行减法操作后,再对(如果是往前倒加上字母个数26)并mod 26,便可得到答案。
//注意!!! 这道题是解密,所以是-5
int main() {
    string str;
    while (getline(cin, str)) { //getline返回的还是istream &  //起始行
        if (str == "ENDOFINPUT") {
            break;
        }
        getline(cin, str); //密文
        for (int i = 0; i < str.length(); i++) {
            if (str[i] <= 'Z' && str[i] >= 'A') {
                str[i] = (str[i] - 'A' - 5 + 26) % 26 + 'A';
            }
        }
        cout << str << endl;
        getline(cin,
                str);  //结束行,虽然这个没用,但是getline不接受空参数

    }
}
  1. 可以用取模完成循环
  2. 学习getline
  3. 注意这里是解密不是加密