1 条题解
-
0
自动搬运
来自洛谷,原作者为

5k_sync_closer
数据结构真可爱。搬运于
2025-08-24 21:07:25,当前版本为作者最后更新于2021-07-19 08:33:40,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
前置芝士
isupper(char c):判断 是否大写字母。islower(char c):判断 是否小写字母。toupper(char c):返回 的大写形式。tolower(char c):返回 的小写形式。上面四个函数都在
<cctype>中reverse(iterator a, iterator b):将 到 的序列翻转在
<algorithm>中思路
将加密过程反过来,即为解密过程。
但题目说反了,根据样例可知,加密时应该是左移 3 位,解密时才是右移 3 位。
遍历字符串,把大写转成小写,小写转成大写。
再
reverse逆序存储,最后右移 3 位输出即可。注意
x,y,z右移要特判。代码
#include <iostream> #include <cstring> #include <cctype> #include <algorithm> using namespace std; char s[101];int l; int main() { cin >> s;l = strlen(s); for(int i = 0;i < l;++i) if(isupper(s[i])) s[i] = tolower(s[i]); else if(islower(s[i])) s[i] = toupper(s[i]); reverse(s, s + l); for(int i = 0;i < l;++i) { switch(s[i]) { case 'x': cout << 'a';break; case 'X': cout << 'A';break; case 'y': cout << 'b';break; case 'Y': cout << 'B';break; case 'z': cout << 'c';break; case 'Z': cout << 'C';break; default : cout << char(s[i] + 3);break; } } return 0; }
- 1
信息
- ID
- 6973
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者