#include <iostream> #include <cstdio> #include <string> using namespace std; int main() { string str; while (getline(cin, str)) {//如果直接按照string进行输入,那么遇到空格时就会停止输入,这样会和题目的要求不符。这时,需要用到函数getline()来获取一行字符串 if (str == "ENDOFINPUT") { break; } getline(cin, str); for (int i = 0; i < str.size(); i++) { //only process character.not space key if (str[i] >= 'A' && str[i] <= 'Z'){ str[i] = (str[i] - 'A' - 5 + 26) % 26 + 'A';//str[i] - 'A' 在字母表中第几个字母 //str[i] - 'A' - 5 明文在密文基础上前推5个,负数表示从最后一个往前推 //(str[i] - 'A' - 5 + 26) % 26 如果是负数,通过+26得到明文字符 // 正数则痛过取余抵消+26的效果 } } //printf("%s", str); cout<<str<<endl; getline(cin, str); } return 0; }