C语言D. 凯撒密码 题目描述 为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。 输入 第一行输入需要进行的解密/加密操作,0表示解密,1表示加密 第二行给出一个以回车结束的非空字符串(少于80个字符) (密文或明文) 第三行输入一个整数offset。 输出 输出加密/解密后的结果字符串。
时间: 2024-02-28 14:56:58 浏览: 213
MP.DF-21型多信息站内电码化设备技术资料.docx
好的,以下是 C 语言的代码示例:
```c
#include <stdio.h>
#include <string.h>
int main()
{
// 获取操作类型
int operation;
scanf("%d", &operation);
// 获取输入字符串
char text[81];
scanf("%s", text);
// 获取偏移量
int offset;
scanf("%d", &offset);
// 将偏移量控制在 0~25 的范围内
offset %= 26;
// 解密操作
if (operation == 0)
{
int len = strlen(text);
for (int i = 0; i < len; i++)
{
if (text[i] >= 'a' && text[i] <= 'z')
{
text[i] = (text[i] - 'a' - offset + 26) % 26 + 'a';
}
else if (text[i] >= 'A' && text[i] <= 'Z')
{
text[i] = (text[i] - 'A' - offset + 26) % 26 + 'A';
}
}
}
// 加密操作
else
{
int len = strlen(text);
for (int i = 0; i < len; i++)
{
if (text[i] >= 'a' && text[i] <= 'z')
{
text[i] = (text[i] - 'a' + offset + 26) % 26 + 'a';
}
else if (text[i] >= 'A' && text[i] <= 'Z')
{
text[i] = (text[i] - 'A' + offset + 26) % 26 + 'A';
}
}
}
// 输出结果
printf("%s", text);
return 0;
}
```
需要注意的是,C 语言中字符类型是用单引号表示的字符常量,而字符串类型是用双引号表示的字符数组。另外,由于 C 语言中没有内置的字符串类型,需要使用字符数组来表示字符串,因此在输入字符串时需要使用 `%s` 格式化字符串。
阅读全文