恺撒密码问题 为使电文保密,往往按其规律将其转换成密码,收报人再按约定的规律将其译回原文。例如:将字母A转变成字母E, a变成e, B变成F, b变成f, 即变成其后的第四个字母,W变成A,X变成B,Y变成C,Z变成D……字母按上述规律转换,非字母字符不变。 请编写函数void fun (char *s),将电文按以上规律转换为密码。在主函数中完成字符串的输入及输出。 如s字符串"thank you" 经过fun(s)函数调用后,内容改为"xlero csy"
时间: 2024-02-01 20:13:56 浏览: 175
下面是实现恺撒密码转换的代码:
```c
#include <stdio.h>
void fun(char *s) {
while (*s != '\0') {
if (*s >= 'A' && *s <= 'Z') { // 大写字母
*s = (*s - 'A' + 4) % 26 + 'A'; // 转换成密码
} else if (*s >= 'a' && *s <= 'z') { // 小写字母
*s = (*s - 'a' + 4) % 26 + 'a'; // 转换成密码
} else { // 非字母字符不变
*s = *s;
}
s++; // 指向下一个字符
}
}
int main() {
char s[100];
printf("请输入电文:");
gets(s); // 输入电文
fun(s); // 转换成密码
printf("密码为:%s\n", s); // 输出密码
return 0;
}
```
输入示例:
```
请输入电文:thank you
```
输出示例:
```
密码为:xlero csy
```
相关问题
凯撒密码加密没考虑大写字母的问题,参考实例6的思路,完善恺撒密码,实现对英文大小写字母都可以加密。 要求 算法改为顺序加5; 明文如果为小写字母要转换为大写字母,即a加密之后转换为F;反之,A转换之后为f。
```python
def caesar_cipher(text):
result = ''
for char in text:
if char.isalpha():
if char.isupper():
result += chr((ord(char) + 5 - 65) % 26 + 65).lower()
else:
result += chr((ord(char) + 5 - 97) % 26 + 97).upper()
else:
result += char
return result
```
解析:
- `char.isalpha()` 判断字符是否为字母;
- `char.isupper()` 判断字符是否为大写字母;
- `chr()` 将 ASCII 码转换为字符;
- `ord()` 将字符转换为 ASCII 码;
- `%` 取模运算,保证结果在 0~25 的范围内;
- 65 和 97 分别为大写字母 A 和小写字母 a 的 ASCII 码;
- `lower()` 和 `upper()` 分别将字符转换为小写和大写字母。
恺撒密码python
恺撒密码是一种古老的加密算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符。在Python中,可以通过手写代码实现恺撒密码的加密和解密。加密方法是将输入字符串中的每个字符循环替换为字母表序列中该字符后面的第三个字符,而解密方法则是将加密后的字符串中的每个字符循环替换为字母表序列中该字符前面的第三个字符。在编写程序时,需要注意对空格和特殊符号的处理。
阅读全文