c语言写:题目描述 为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。 输入 第一行输入需要进行的解密/加密操作,0表示解密,1表示加密 第二行给出一个以回车结束的非空字符串(少于80个字符) (密文或明文) 第三行输入一个整数offset。 输出 输出加密/解密后的结果字符串。输入样例:1 Hello Hangzhou 2,输出样例:Jgnnq Jcpibjqw
时间: 2024-02-28 16:52:50 浏览: 45
以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 80
void encrypt(char *str, int offset) {
int i;
int len = strlen(str);
for (i = 0; i < len; i++) {
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;
}
}
}
void decrypt(char *str, int offset) {
encrypt(str, -offset);
}
int main() {
int operation;
char str[MAX_LEN + 1];
int offset;
scanf("%d", &operation);
getchar();
fgets(str, MAX_LEN + 1, stdin);
scanf("%d", &offset);
if (operation == 1) {
encrypt(str, offset);
} else {
decrypt(str, offset);
}
printf("%s", str);
return 0;
}
```
在上述代码中,我们定义了两个函数:encrypt() 和 decrypt(),分别用于加密和解密字符串。这两个函数实现的是凯撒密码的加密/解密过程。在主函数中,我们读入需要进行的操作(加密或解密)、输入的字符串和偏移量,并根据操作调用对应的函数进行处理,最后输出处理结果。
需要注意的是,由于需要处理的字符串长度不确定,我们需要使用字符数组来存储。在本代码中,我们定义了一个 MAX_LEN 常量来表示字符数组的最大长度,为了防止数组越界,我们在读入字符串时使用了 fgets() 函数,并指定了读入的最大长度为 MAX_LEN。同时,在字符串结尾处我们加入了一个空字符 '\0',以便于后续的处理。
此外,由于在输入操作的时候,我们可能会输入多余的回车符,因此需要在 scanf() 函数后面使用 getchar() 函数来读取多余的回车符。
最后,由于题目中并没有要求在输出字符串结尾处加入回车符,因此我们在 printf() 函数中省略了换行符。
相关推荐
![php](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![php](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)