【id:431】【14分】E. 凯撒密码c语言oj
时间: 2023-08-04 13:04:03 浏览: 148
这是一道凯撒密码的C语言OJ题目,要求实现凯撒密码的加密和解密功能。
以下是参考代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void encrypt(char *plaintext, int key);
void decrypt(char *ciphertext, int key);
int main()
{
char plaintext[1000], ciphertext[1000];
int key;
printf("Enter plaintext: ");
fgets(plaintext, 1000, stdin);
printf("Enter key: ");
scanf("%d", &key);
encrypt(plaintext, key);
printf("Encrypted text: %s\n", plaintext);
decrypt(plaintext, key);
printf("Decrypted text: %s\n", plaintext);
return 0;
}
void encrypt(char *plaintext, int key)
{
int i;
for(i = 0; plaintext[i] != '\0'; i++)
{
if(plaintext[i] >= 'a' && plaintext[i] <= 'z')
{
plaintext[i] = (plaintext[i] - 'a' + key) % 26 + 'a';
}
else if(plaintext[i] >= 'A' && plaintext[i] <= 'Z')
{
plaintext[i] = (plaintext[i] - 'A' + key) % 26 + 'A';
}
}
}
void decrypt(char *ciphertext, int key)
{
encrypt(ciphertext, 26 - key);
}
```
该代码中,`encrypt`函数实现凯撒密码的加密功能,`decrypt`函数实现凯撒密码的解密功能。在`main`函数中,读入明文和密钥,调用`encrypt`函数加密明文,输出密文,然后调用`decrypt`函数解密密文,输出明文。
需要注意的是,该代码中默认密文和明文都不包含空格和其他非字母的字符。如果需要支持空格和其他字符,可以修改`encrypt`和`decrypt`函数的实现。
阅读全文