【题目描述】
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。 在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。 经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子) 1.原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz) 2.逆序存储(abcd -> dcba ) 3.大小写反转(abXY -> ABxy)
【输入】
一个加密的字符串。(长度小于50且只包含大小写字母)
【输出】
输出解密后的字符串。
【输入样例】
GSOOWFASOq
【输出样例】
Trvdizrrvj
【代码】
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char a[51],b[51];
cin>>a;
int len=strlen(a);
int k=len;
//倒叙 大小写 转换后存入b数组
for(int i=0;i<len;i++)
{
if( (a[i]>='a' && a[i]<='z') ) b[k-1]=a[i]-32; //小写则-32变为大写
else b[k-1] = a[i] +32 ; //否则就是大写字母 +32变成小写
k--; //数组b从最后开始顺序存放 转换过大小写的数组a
}
//右移三位
for(int i=0;i<len;i++)
{
if(b[i]=='x') cout<<"a"; //xyz 大小写 6种情况
else if (b[i]=='X') cout<<"A";
else if (b[i]=='y') cout<<"b";
else if (b[i]=='Y') cout<<"B";
else if (b[i]=='z') cout<<"c";
else if (b[i]=='Z') cout<<"C";
else cout<<char(b[i]+3); //其他情况 右移3位输出
}
}