有一电文,已按下面规律译成密码。 A->Z a->z B->Y b->y C->X c->x … … 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程将密码译回原文,并打印出密码和原文。 程序的运行示例如下: 请输入字符:hello,world! 密码是:hello,world! 原文是:svool,dliow!用C语言
时间: 2024-02-18 11:59:56 浏览: 91
ADS-B报文解析
4星 · 用户满意度95%
好的,以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void encrypt(char str[])
{
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (isalpha(str[i])) {
if (isupper(str[i])) {
str[i] = 'Z' - (str[i] - 'A');
} else {
str[i] = 'z' - (str[i] - 'a');
}
}
}
}
void decrypt(char str[])
{
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (isalpha(str[i])) {
if (isupper(str[i])) {
str[i] = 'A' + ('Z' - str[i]);
} else {
str[i] = 'a' + ('z' - str[i]);
}
}
}
}
int main()
{
char str[100];
printf("请输入字符:");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 移除末尾的换行符
printf("密码是:%s\n", str);
encrypt(str);
printf("加密后:%s\n", str);
decrypt(str);
printf("解密后:%s\n", str);
return 0;
}
```
其中,encrypt 函数用于加密,decrypt 函数用于解密。两个函数的实现思路都很类似,都是遍历字符串中的每个字符,如果是字母就根据题目要求进行相应的操作。最后在主函数中调用 encrypt 和 decrypt 函数即可。
阅读全文