2有一份电文,已按下面规律译成密码: A→ Z a→ z B→ Y b→ y C→ X c→ x 即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程将密码译回原文,并输出密码和原文用c语言
时间: 2024-12-08 07:13:28 浏览: 17
在C语言中,你可以创建一个函数来实现这个字母转换过程。这是一个简单的示例代码,它接受输入的密码字符串,然后解密并返回原始文本:
```c
#include <stdio.h>
#include <string.h>
char decrypt_char(char encrypted_char) {
if (encrypted_char >= 'a' && encrypted_char <= 'z') {
return encrypted_char + 25; // 将字母从Z-a移动到a-z
} else if (encrypted_char >= 'A' && encrypted_char <= 'Z') {
return encrypted_char - 24; // 同样,从Z-A移动到A-Z
} else {
return encrypted_char; // 非字母字符保持原样
}
}
void decrypt_string(const char *cipher, char *plaintext) {
int len = strlen(cipher);
for (int i = 0; i < len; ++i) {
plaintext[i] = decrypt_char(cipher[i]);
}
plaintext[len] = '\0'; // 添加结束符
}
int main() {
char cipher[100];
printf("请输入加密后的电文: ");
fgets(cipher, sizeof(cipher), stdin); // 接收用户输入
cipher[strcspn(cipher, "\n")] = '\0'; // 移除换行符
char plaintext[100];
decrypt_string(cipher, plaintext);
printf("原文: %s\n", plaintext);
return 0;
}
```
当你运行此程序时,它会提示用户输入加密的电文,然后解密并打印出原文。
阅读全文