编程对字符串 China 进行位移为 4 的凯撒编码并输出。凯撒编码 将输入字符向右偏移指定个数作为编码。如 A 右移 4 是 E。密码接收 方将密码逐字符反向移动 4 位即可实现解码。要求使用指针实现。
时间: 2024-06-13 12:04:31 浏览: 157
Caesar-cipher-program:这是一个生成秘密代码或对其进行编码和解码的程序
可以使用指针和循环来实现字符串的位移操作,具体代码如下:
```c
#include <stdio.h>
#include <string.h>
void caesar_cipher(char *str, int shift) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = (str[i] - 'A' + shift) % 26 + 'A';
} else if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = (str[i] - 'a' + shift) % 26 + 'a';
}
}
}
int main() {
char str[] = "China";
int shift = 4;
printf("Original string: %s\n", str);
caesar_cipher(str, shift);
printf("Ciphered string: %s\n", str);
return 0;
}
```
上述代码中,`caesar_cipher` 函数接受一个字符串指针和一个整数作为参数,表示要对字符串进行位移的位数。函数中使用循环遍历字符串中的每个字符,如果是大写字母则将其转换为 0-25 的数字,加上位移量后再转换回字母;如果是小写字母则同理。最后在 `main` 函数中调用 `caesar_cipher` 函数对字符串进行位移,并输出结果。
如果要进行解码,只需要将位移量取反即可,即将 `shift` 改为 `-shift`。
阅读全文