描述
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。 经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)
1.原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)
2.逆序存储(abcd -> dcba )
3.大小写反转(abXY -> ABxy)
格式
输入格式
一个加密的字符串。(长度小于50且只包含大小写字母)
输出格式
输出解密后的字符串。
样例
输入样例
GSOOWFASOq
输出样例
Trvdizrrvj
限制
时间限制: 1000 ms
内存限制: 65536 KB
#include <stdio.h>
#include <string.h>
// 本题 oj 只能给 %80 的分,并且在一些测试集中会 Runtime Error
// 如有同学可以看出问题,请评论我,谢谢;
int main()
{
char str[50];
char p;
int i = 0,s,l;
scanf("%s",str);
l = strlen(str);
// 大小转换
while(i<l){
if(str[i]>=(int)'A'&&str[i]<='Z')
str[i] = str[i]+('a'-'A');
else if(str[i]>='a'&&str[i]<='z')
str[i] = str[i]-('a'-'A');
i++;
}
// 反逆序
i = 0;
while(i < l/2){
p = str[i];
str[i] = str[l-i-1];
str[l-i-1] = p;
i++;
}
// 字母表右移三位
i = 0;
while(i<l){
if(str[i]>='x')
str[i] = 'a'+(str[i]-'x');
else if(str[i] >= 'X'&&str[i]<'a')
str[i] = 'A'+(str[i]-'X');
else
str[i] = str[i]+3;
i++;
}
printf("%s",str);
return 0;
}