SLE15课后题
本帖最后由 天马行空VIP 于 2016-3-27 16:19 编辑#include <stdio.h>
int main()
{
int ch;
printf("请输入明文:");
while ((ch = getchar()) != '\n')
{
if (ch >= 'a' && ch <= 'z')
{
putchar('a' + (ch - 'a' + 3) % 26);//这句话不懂,求解释 。
continue;
}
if (ch >= 'A' && ch <= 'Z')
{
putchar('A' + (ch - 'A' + 3) % 26);
continue;
}
putchar(ch);
}
putchar('\n');
return 0;
} 凯撒密码问题。即密文是输入的明文的后面第3个字母。
注意点是对于x,y,z三个字母,转换后是a,b,c,因此不能简单的直接+3,也就是到末尾要循环到头部。
表达式就是解决这个问题的 muyu0096 发表于 2016-3-26 18:31
凯撒密码问题。即密文是输入的明文的后面第3个字母。
注意点是对于x,y,z三个字母,转换后是a,b,c,因 ...
我不太懂这句话是怎么实现向后移三位的,尤其是%26 ASCII码你总要知道啊,这是理解这个的基础知识,如果不知道,你百度下,很多讲的。 天马行空VIP 发表于 2016-3-26 22:42
我不太懂这句话是怎么实现向后移三位的,尤其是%26
其实是一个小小的数学技巧,理解这类技巧的方法很简单:代几个数进去尝试,你就会慢慢理解是咋回事了。
PS:S1E15,是 1,第一季的意思,不是 L~~~~~ 谢谢大家 学习了.
页:
[1]