c语言写:题目描述 为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。 输入 第一行输入需要进行的解密/加密操作,0表示解密,1表示加密 第二行给出一个以回车结束的非空字符串(少于80个字符) (密文或明文) 第三行输入一个整数offset。 输出 输出加密/解密后的结果字符串。
时间: 2024-02-28 13:52:44 浏览: 163
php凯撒密码加密和解密---适合加密英文
5星 · 资源好评率100%
以下是C语言代码实现:
```c
#include <stdio.h>
#define MAX_LEN 80
void encrypt(char *str, int offset) {
int i = 0;
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = 'a' + (str[i] - 'a' + offset + 26) % 26;
} else if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = 'A' + (str[i] - 'A' + offset + 26) % 26;
}
i++;
}
}
void decrypt(char *str, int offset) {
encrypt(str, -offset);
}
int main() {
int operation;
char str[MAX_LEN + 1];
int offset;
scanf("%d", &operation);
scanf("%s", str);
scanf("%d", &offset);
if (operation == 1) {
encrypt(str, offset);
} else {
decrypt(str, offset);
}
printf("%s\n", str);
return 0;
}
```
在上述代码中,我们定义了两个函数:encrypt() 和 decrypt(),分别用于加密和解密字符串。这两个函数实现的是凯撒密码的加密/解密过程。在主函数中,我们读入需要进行的操作(加密或解密)、输入的字符串和偏移量,并根据操作调用对应的函数进行处理,最后输出处理结果。
需要注意的是,由于需要处理的字符串长度不确定,我们需要使用字符数组来存储。在本代码中,我们定义了一个 MAX_LEN 常量来表示字符数组的最大长度,为了防止数组越界,我们在读入字符串时使用了 %s 格式化字符串,并指定了读入的最大长度为 MAX_LEN。同时,在字符串结尾处我们加入了一个空字符 '\0',以便于后续的处理。
阅读全文