【发布时间】:2017-03-06 22:20:52
【问题描述】:
#include <stdio.h>
int main()
{
int rotation, i=0;
char str[80]={0};
printf("Enter Text: ");
scanf("%[^\n]", str);
printf("\"");
printf("Enter Rotation: ");
scanf("%i", &rotation);
while(str[i])
{
if (str[i] >= 'a' && str[i] <= 'z')
printf("%c\n", 'a' + (str[i] - 'a' + rotation)%26);
else
printf("%c\n", str[i]);
i++;
}
return 0;
}
很难理解这行代码(printf("%c\n", 'a' + (str[i] - 'a' + rotation)%26); )
谁能快速写一个简短的解释对我有帮助
【问题讨论】:
-
这是一个简单的密码,称为Caesar Cipher。据称,Julius 使用了 3 的偏移量(以及 23 个字母的 Latin alphabet,而不是更现代的 26 个字母变体——J、U 和 W 是新出现的)。
-
注意不要从本教程中学到错误的教训:该算法仅“加密”Basic Latin 字母的小写字母。文本——甚至是英文文本——使用的字母比所有基本拉丁字母都要多。字符值的算术适用性非常有限。
标签: c arrays string character caesar-cipher