用c语言写凯撒密码的程序
时间: 2024-03-09 14:25:20 浏览: 24
凯撒密码的c语言编写
以下是用 C 语言实现凯撒密码的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
// 加密函数
void encrypt(char *message, int key) {
int len = strlen(message);
for (int i = 0; i < len; i++) {
if (message[i] >= 'A' && message[i] <= 'Z') {
message[i] = ((message[i] - 'A') + key) % 26 + 'A';
} else if (message[i] >= 'a' && message[i] <= 'z') {
message[i] = ((message[i] - 'a') + key) % 26 + 'a';
}
}
}
// 解密函数
void decrypt(char *message, int key) {
int len = strlen(message);
for (int i = 0; i < len; i++) {
if (message[i] >= 'A' && message[i] <= 'Z') {
message[i] = ((message[i] - 'A') - key + 26) % 26 + 'A';
} else if (message[i] >= 'a' && message[i] <= 'z') {
message[i] = ((message[i] - 'a') - key + 26) % 26 + 'a';
}
}
}
int main() {
char message[MAX_LEN];
int key;
printf("请输入要加密/解密的字符串:\n");
fgets(message, MAX_LEN, stdin);
printf("请输入加密/解密密钥:\n");
scanf("%d", &key);
// 去除输入的换行符
message[strcspn(message, "\n")] = '\0';
// 加密
encrypt(message, key);
printf("加密后的字符串为:%s\n", message);
// 解密
decrypt(message, key);
printf("解密后的字符串为:%s\n", message);
return 0;
}
```
程序中,encrypt 函数实现对字符串的加密,decrypt 函数实现对字符串的解密。在主函数中,首先输入要加密/解密的字符串和密钥,然后调用 encrypt 函数对字符串进行加密,再输出加密后的字符串。接着调用 decrypt 函数对加密后的字符串进行解密,最后输出解密后的字符串。
需要注意的是,程序中使用了 fgets 函数来获取输入的字符串,因为 scanf 函数无法读取包含空格的字符串。同时,由于 fgets 函数会在输入的字符串末尾自动添加换行符,因此需要使用 strcspn 函数去除换行符。
阅读全文