用c语言完成这个任务 为防止信息窃取,需要采用加密技术将电文加密变成密文。恺撒密码是一种简单的替换加密技术,其规则是将明文中的所有字母都在字母表上偏移offset位后被替换成密文:当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,调用函数fun()后用凯撒密码将其加密后输出。 函数接口定义: void fun ( char *Pstr, const int n ); 其中 Pstr 和 n 都是用户传入的参数。 Pstr 指向要加密的字符串; n 的范围不超过整数。
时间: 2023-06-11 20:08:46 浏览: 285
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <ctype.h>
void fun(char *Pstr, const int n) {
int i = 0;
char c;
while (Pstr[i] != '\0') {
c = Pstr[i];
if (isalpha(c)) {
if (islower(c)) {
c = 'a' + (c - 'a' + n + 26) % 26;
} else {
c = 'A' + (c - 'A' + n + 26) % 26;
}
}
putchar(c);
i++;
}
}
int main() {
char str[80];
int offset;
printf("请输入要加密的字符串:");
fgets(str, 80, stdin);
printf("请输入偏移量:");
scanf("%d", &offset);
fun(str, offset);
return 0;
}
```
在上面的代码中,我们先通过 `fgets()` 函数读入要加密的字符串,然后通过 `scanf()` 函数读入偏移量。接着,在 `fun()` 函数中,我们遍历字符串中的每一个字符,如果它是字母,就将它加上偏移量并加密成另一个字母。最后,我们通过 `putchar()` 函数输出加密后的字符。
值得注意的是,由于恺撒密码是一种简单的替换加密技术,因此它的加密方法也非常简单,只需要将明文中的每个字母都替换成密文即可。在实现时,我们可以使用 ASCII 码表来实现字母的加密和解密,具体方法是将字母的 ASCII 码加上偏移量,然后将结果对 26 取模,最后再加上对应字母的 ASCII 码。需要注意的是,当偏移量为负数时需要加上 26,以保证结果仍在字母表中。
阅读全文