战时密码本

题目描述 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 }

猜你喜欢

转载自www.cnblogs.com/zhangjs73/p/10212631.html