本题难度不大,根据题意写清楚加密和解密的过程即可,其中涉及到大小写字母之间相互转换的问题。
#include<string>
#include<iostream>
using namespace std;
// 解密操作
void decipher(string &s) {
for (int i = 0; i < s.size(); i++) {
if (s[i] >= 'b' && s[i] <= 'z') {
s[i] = s[i] - 33;
continue;
}
if (s[i] == 'a') {
s[i] = 'Z';
continue;
}
if (s[i] >= 'B' && s[i] <= 'Z') {
s[i] = s[i] + 31;
continue;
}
if (s[i] == 'A') {
s[i] = 'z';
continue;
}
if (s[i] >= '1' && s[i] <= '9') {
s[i] = s[i] - 1;
continue;
}
if (s[i] == '0') {
s[i] = '9';
continue;
}
}
}
// 加密操作
void encryption(string &s) {
for (int i = 0; i < s.size(); i++) {
if (s[i] >= 'a' && s[i] <= 'y') {
s[i] = s[i] - 31;
continue;
}
if (s[i] == 'z') {
s[i] = 'A';
continue;
}
if (s[i] >= 'A' && s[i] <= 'Y') {
s[i] = s[i] + 33;
continue;
}
if (s[i] == 'Z') {
s[i] = 'a';
continue;
}
if (s[i] >= '0' && s[i] <= '8') {
s[i] = s[i] + 1;
continue;
}
if (s[i] == '9') {
s[i] = '0';
continue;
}
}
}
int main() {
string s1, s2;
getline(cin, s1, '\n');
getline(cin, s2, '\n');
encryption(s1);
decipher(s2);
cout << s1 << endl;
cout << s2 << endl;
}l