题目描述 为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。 输入 第一行输入需要进行的解密/加密操作,0表示解密,1表示加密 第二行给出一个以回车结束的非空字符串(少于80个字符) (密文或明文) 第三行输入一个整数offset。 输出 输出加密/解密后的结果字符串。用C语言
时间: 2024-03-10 17:45:36 浏览: 90
以下是一个C语言的实现:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
int operation, offset;
char string[81];
fgets(string, 81, stdin); // 获取需要加密或解密的字符串
scanf("%d", &operation); // 获取加密或解密操作
scanf("%d", &offset); // 获取偏移量
if (operation == 1) { // 加密操作
for (int i = 0; string[i] != '\0'; i++) {
if (isalpha(string[i])) { // 只对字母进行加密
if (islower(string[i])) {
putchar((string[i] - 'a' + offset) % 26 + 'a');
} else {
putchar((string[i] - 'A' + offset) % 26 + 'A');
}
} else {
putchar(string[i]);
}
}
} else if (operation == 0) { // 解密操作
for (int i = 0; string[i] != '\0'; i++) {
if (isalpha(string[i])) { // 只对字母进行解密
if (islower(string[i])) {
putchar((string[i] - 'a' - offset + 26) % 26 + 'a');
} else {
putchar((string[i] - 'A' - offset + 26) % 26 + 'A');
}
} else {
putchar(string[i]);
}
}
} else {
printf("无效操作");
}
return 0;
}
```
你可以将这段代码复制到C语言的开发环境中编译运行,并按照提示输入相应的信息即可。
阅读全文