codeup之解密
Description
有一行电文,已按如下规律译成密码:
A–>Z a–>z
B–>Y b–>y
C–>X c–>x
… …
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。
Input
输入一行密文
Output
解密后的原文,单独占一行。
Sample Input Copy
ZYX123zyx
Sample Output Copy
ABC123abc
idea
- ASCII码值
“A”到“Z”的ASCII码值分别为65到90
“a”到“z”的ASCII码值分别为97到到122 - 以小写字母为例
str[i] = 26 - (str[i] - 96) + 1 + 96 - 注意因为使用了gets()函数,提交时记得选C语言,否则codeup会报编译错误
solution
#include <stdio.h>
#include <string.h>
int main(){
char str[10];
gets(str);
for(int i = 0; i < strlen(str); i++){
if(str[i] >= 'a' && str[i] <= 'z'){
str[i] = 219 - str[i];
}
else if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] = 155 - str[i];
}
}
printf("%s", str);
return 0;
}