#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不接受空参数
}
}
- 可以用取模完成循环
- 学习getline
- 注意这里是解密不是加密