带你学C带你飞 sle15 课后最作业动动手 请指教
#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 。
如果 ch 为 'a' 那么 ch - 'a' + 3 为 3,如果 ch 为 'b' 那么 ch - 'b' + 3 为 4 等等。
这里的 + 3 代表偏移量为 3 。
由于如果 ch 为 'x'、'y'、'z',ch - 'a' + 3 会超过 (25 + 3),所以需要对它进行取余。
最后再把这个数字转化为字符,+ 'a' 楼上正解 (ch - 'a' + 3) % 26 保证数字在0(包括0)到26(不包括26)之间 这样可以保证他在1-25之间 zltzlt 发表于 2020-8-11 17:36
题目要求偏移量为 3 。
如果 ch 为 'a' 那么 ch - 'a' + 3 为 3,如果 ch 为 'b' 那么 ch - 'b' + 3 为...
害,才了解到4 % 26 = 4,求模运算符左侧小于右侧,结果等于左侧的数字{:10_243:} {:7_146:} {:5_106:} 我也来学习学习 {:5_95:} 鱼币 。。。 象棋爱好者 发表于 2020-8-27 13:29
鱼币
都是来蹭我币的{:10_266:} 毛驴子哈 发表于 2020-8-28 09:58
都是来蹭我币的
嘿嘿嘿{:10_256:}
页:
[1]