帮我用c语言凯撒加密个人姓名,并实现小写字母1-30个位移
时间: 2023-03-25 21:04:36 浏览: 145
好的,我可以为您用 C 语言实现凯撒加密个人姓名,并实现小写字母1-30个位移。以下是代码示例:
```
#include <stdio.h>
#include <string.h>
void caesarEncrypt(char *str, int shift) {
int len = strlen(str);
for (int i = ; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = (str[i] - 'a' + shift) % 26 + 'a';
}
}
}
int main() {
char name[31];
int shift;
printf("请输入您的姓名:");
scanf("%s", name);
printf("请输入小写字母的位移量(1-30):");
scanf("%d", &shift);
caesarEncrypt(name, shift);
printf("加密后的姓名为:%s\n", name);
return ;
}
```
您可以输入您的姓名和小写字母的位移量,程序会将您的姓名进行凯撒加密,并输出加密后的结果。
相关问题
帮我用c语言写凯撒加密个人姓名,并实现小写字母1-30个位移
好的,我可以回答这个问题。以下是用 C 语言实现凯撒加密个人姓名,并实现小写字母1-30个位移的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char name[100];
int shift;
printf("请输入您的姓名:");
scanf("%s", name);
printf("请输入位移量(1-30):");
scanf("%d", &shift);
int len = strlen(name);
for (int i = ; i < len; i++) {
if (name[i] >= 'a' && name[i] <= 'z') {
name[i] = 'a' + (name[i] - 'a' + shift) % 26;
}
}
printf("加密后的姓名为:%s\n", name);
return ;
}
```
这个程序会要求用户输入姓名和位移量,然后对姓名进行凯撒加密,并输出加密后的结果。如果输入的姓名中包含大写字母、数字或符号,程序会忽略它们不进行加密。
c语言凯撒密码加密流程图
凯撒密码是一种简单的替换式加密技术,它通过将明文字符按照字母表向后(或向前)固定数量的位置移动来进行加密。以下是使用C语言实现凯撒密码的基本流程图:
1. **输入阶段**:
- 输入原始字符串(明文)
- 用户指定加密位移值(例如,3位表示每个字母向后移动三位)
2. **处理阶段**:
a. 遍历每个字符
i. 判断字符是否为大写字母、小写字母还是其他字符(非字母)
b. 对于字母:
i. 如果是大写字母,应用ASCII码转换,如'A' + 3 -> 'D'
ii. 如果是小写字母,同样应用ASCII码转换,如'a' + 3 -> 'd'
3. **加密阶段**:
- 使用新的位置替换原始字符
4. **输出阶段**:
- 输出加密后的字符串
5. **结束**:
- 结束循环,如果整个字符串都加密完成
下面是简化的伪代码示例:
```c
char encrypt_char(char original_char, int shift) {
if (isalpha(original_char)) {
if (isupper(original_char)) {
return ((original_char - 'A' + shift) % 26) + 'A';
} else {
return ((original_char - 'a' + shift) % 26) + 'a';
}
}
return original_char; // 非字母字符不变
}
void caesar_cipher(char* plaintext, char* ciphertext, int shift) {
for (int i = 0; plaintext[i] != '\0'; ++i) {
ciphertext[i] = encrypt_char(plaintext[i], shift);
}
}
```
阅读全文