题目描述
有一行电文,已按如下规律译成密码:
A–>Z a–>z
B–>Y b–>y
C–>X c–>x
… …
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。
输入
输入一行密文
输出
解密后的原文,单独占一行。
样例输入 Copy
ZYX123zyx
样例输出 Copy
ABC123abc
参考代码
#include<stdio.h>
#include<string.h>
/*
ASCII码 a-z:97-122
A-Z:65-90
0-9:48-57
*/
int main() {
char str[100];
scanf("%s", str);
int len = strlen(str);
for(int i = 0; i < len; i++) {
if(str[i] >= 'a' && str[i] <= 'z') {
str[i] = 'z' - (str[i] - 'a');//或者写成str[i] = 219 - str[i]
} else if(str[i] >= 'A' && str[i] <= 'Z') {
str[i] = 'Z' - (str[i] - 'A');//或者写成str[i] = 155 - str[i]
}
}
printf("%s", str);
return 0;
}