有一电文,字符串长度N<=80,已按下列规律译成译码: A→Z a→z B→Y b→y C→X c→x … … 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。编写一个程序将密码译成原文,并输出原文。
时间: 2024-05-07 22:16:52 浏览: 19
好的,你的问题我已经记下了。这个问题可以使用 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;
}
```
用C语言编写一个程序将一个电文,已按下列规律译成译码: A→Z a→z B→Y b→y C→X c→x 即第一个字母变成第 26 个字母,第 i 个字母变成第(26-i+1)个字母。非字母字符不变。编写一个程序将密码译成原文,并输出密码和原文。
好的,以下是用 C 语言编写的程序,可以将给定的密码解密:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char ch, origin;
printf("请输入需要解密的电文:\n");
while ((ch = getchar()) != EOF) {
if (isalpha(ch)) { // 如果是字母
if (isupper(ch)) { // 如果是大写字母
origin = 'A' + 'Z' - ch; // 进行解密
} else { // 如果是小写字母
origin = 'a' + 'z' - ch; // 进行解密
}
} else { // 如果是非字母字符
origin = ch; // 不需要解密
}
putchar(origin); // 输出解密后的字符
}
return 0;
}
```
上面的程序中,我们使用了 `getchar()` 函数来逐个读取用户输入的字符,然后根据题目要求进行解密,并使用 `putchar()` 函数输出解密后的字符。需要注意的是,我们使用了 `isalpha()` 函数来判断当前字符是否为字母,使用了 `isupper()` 函数来判断是否为大写字母,以及 `islower()` 函数来判断是否为小写字母。