题目描述
据说凯撒大帝是最初发明了加密的人,用于军队传递消息。方法是将字母表中的字母,用其后的第5个字母代替。
比如a用f代替,z用e代替。
编写解密程序,输入密文,对密文进行解密,并输出解密后的原文。
考虑大小写,即密文中的大写字母,解密后的原文仍然是大写,密文中的小写字母,解密后是小写。其他字符原文和密文都是一样的。
输入密文为:N qtaj dtz!
输出的的原文为:I love you!
c 语言代码实现
#include <stdio.h>
char decrypt_char(char c) {
// 解密字母
if (c >= 'a' && c <= 'z') {
return (c - 'a' - 5 + 26) % 26 + 'a'; // 小写字母
} else if (c >= 'A' && c <= 'Z') {
return (c - 'A' - 5 + 26) % 26 + 'A'; // 大写字母
}
return c; // 其他字符保持不变
}
void decrypt_message(const char *input, char *output) {
int i = 0;
while (input[i] != '\0') {
output[i] = decrypt_char(input[i]);
i++;
}
output[i] = '\0'; // 结束字符串
}
int main() {
char input[100]; // 存储密文
char output[100]; // 存储解密后的原文
printf("请输入密文: ");
fgets(input, sizeof(input), stdin); // 读取密文
decrypt_message(input, output); // 解密
printf("解密后的原文: %s", output); // 输出原文
return 0;
}