题目描述 Description
国家博物馆有一本战时密码本,其中记录了一些关键信息,通过博物馆管理员介绍,加密过程如下: 1.所有字符逆向存储(如:ABCD——>DCBA); 2.所有字符在字母表中被循环右移两个单位(如:ABCD——>CDEF); 3.所有字符大小写替换(ABCD——abcd)。 小明翻阅了那本战时密码本,记住了一串字符,请你根据加密规则,找出其原字符串。
输入描述 Input Description
输入为一行,为战时密码本的一行字符串(全为字母,且长度不超过100)。
输出描述 Output Description
输出为一行,为战时密码本对应的原字符串。
样例输入 Sample Input
AbcD
样例输出 Sample Output
bAZy
1 #include <iostream>
2 #include <stdio.h>
3 #include <string.h>
4 using namespace std;
5
6 int main()
7 {
8 char s[50];
9 gets(s);
10 int len=strlen(s);
11
12 //大小写转换
13 for(int i=0;i<len;i++)
14 {
15 if(s[i]>='A'&&s[i]<='Z'){
16 s[i]+=32;
17 }
18 else if(s[i]>='a'&&s[i]<='z')
19 s[i]-=32;
20 }
21
22 //左移两位
23 for(int i=0;i<len;i++)
24 {
25 if(s[i]>='a' && s[i]<='z')
26 s[i]=(s[i]-2-'z')%26+'z';
27 else if(s[i]>='A' && s[i]<='Z')
28 s[i]=(s[i]-2-'Z')%26 + 'Z';
29 }
30
31 //右移两位
32 // for(int i=0;i<len;i++)
33 // {
34 // if(s[i]>='a' && s[i]<='z')
35 // s[i]=(s[i]+2-'a')%26 + 'a';
36 // else if(s[i]>='A' && s[i]<='Z')
37 // s[i]=(s[i]+2-'A')%26 + 'A';
38 // }
39
40 for(int i=len-1;i>=0;i--)
41 {
42 cout<<s[i];
43 }
44
45 return 0;
46 }