c语言有一种古典加密方法就是按照字母表顺序,把每个字母循环右移k位,从而转换为加密的另一个字母。 例如偏移2位,即A对应C,B对应D,……X对应Z,Y对应A,Z对应B。 注:要求用表达式实现加密。
时间: 2024-05-02 15:22:05 浏览: 144
实现方式如下:
```c
#include <stdio.h>
#define OFFSET 2
int main()
{
char ch;
printf("请输入明文:\n");
scanf("%c", &ch);
while (ch != '\n') {
if (ch >= 'A' && ch <= 'Z') {
ch = 'A' + (ch - 'A' + OFFSET) % 26;
}
printf("%c", ch);
scanf("%c", &ch);
}
return 0;
}
```
在上面的代码中,我们首先定义了一个偏移量 OFFSET,然后通过循环读入输入的明文字符,对于每一个大写字母,我们使用表达式 `'A' + (ch - 'A' + OFFSET) % 26` 来计算出加密后的字符,其中 `(ch - 'A' + OFFSET) % 26` 表示将原来的字母往右偏移 OFFSET 个单位之后,再将结果对 26 取模,以实现循环移位的效果。
例如,当输入的明文字符为 `'A'` 时,我们将其转换为加密后的字符 `'C'`,因为 `'C'` 对应的 ASCII 码值比 `'A'` 大 2。同样地,当输入的明文字符为 `'X'` 时,我们将其转换为加密后的字符 `'Z'`,因为 `'Z'` 对应的 ASCII 码值比 `'X'` 大 2,而又因为 `'Z'` 是字母表的最后一个字母,所以往右偏移 2 位之后又回到了字母表的开头,即 `'A'`。
阅读全文