有一电文,字符串长度N<=80,已按下列规律译成译码: A→Z a→z B→Y b→y C→X c→x … … 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。编写一个程序将密码译成原文,并输出原文。
时间: 2024-05-07 12:16:52 浏览: 80
好的,你的问题我已经记下了。这个问题可以使用 Python 进行解决,以下是代码:
```python
code = input("请输入加密后的电文:")
origin = ""
for char in code:
if char.isalpha():
if char.isupper():
origin += chr(ord('A') + ord('Z') - ord(char))
else:
origin += chr(ord('a') + ord('z') - ord(char))
else:
origin += char
print("解密后的电文为:", origin)
```
运行程序后,输入加密后的电文,如 `Svool dliow!`,程序会输出解密后的电文:`Hello world!`。
希望这个代码对你有帮助。如果你还有其他问题,欢迎随时提出。
相关问题
有一电文,字符串长度N<=80,已按下列规律译成译码: A→Z a→z B→Y b→y C→X c→x … … 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。编写一个程序将密码译成原文,并输出原文。用C语言解决
```
#include <stdio.h>
#include <string.h>
int main() {
char str[81]; // 保存电文的数组
int len; // 保存电文长度
fgets(str, 81, stdin); // 读取电文字符串
len = strlen(str); // 计算电文字符串长度
for (int i = 0; i < len; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') { // 大写字母
str[i] = 'A' + 'Z' - str[i];
} else if (str[i] >= 'a' && str[i] <= 'z') { // 小写字母
str[i] = 'a' + 'z' - str[i];
}
}
printf("原文是:%s", str); // 输出原文
return 0;
}
```
阅读全文