我变秃了。 发表于 2020-7-28 04:02:26

putchar的问题

putchar('A' + (ch - 'A' + 3) % 26);
这句话是什么含义,这句话中的%26是什么意思,怎么使用?

livcui 发表于 2020-7-28 08:05:15

本帖最后由 livcui 于 2020-7-28 08:33 编辑

就向 putchar 函数传入一个 char 参数,然后 putchar 输出传入的字符,
% 26 是取余数(取模运算符),比如 7 % 2 = 1就是取模。

sunrise085 发表于 2020-7-28 08:42:52

%是求余运算,就是求两个数相除的余数,例如:8%3=2,13%5=3
(ch - 'A' + 3) % 26
这个是将(ch - 'A' + 3) 对26求余,然后在加上字符 'A'
这个的目的是将字符 ch 循环后移三位,例如: 'A' 变成 'D' , 'X' 变成 'A' , 'Z' 变成 'C'
ch-'A' 就是用 ch 的ASCII码减去 'A' 的ASCII码
当 ch小于X、Y、Z,即(ch - 'A' + 3)小于26的时候,求余不求与结果一样,('A' + (ch - 'A' + 3) % 26)实际上就是 ch+3,相当于直接后移三位,当ch为X、Y、Z,即(ch - 'A' + 3)大于26的时候,其余就相当于减去了26,('A' + (ch - 'A' + 3) % 26)相当于('A' + (ch - 'A' + 3)- 26),即 (ch+3-26), 将XYZ分别变为ABC
页: [1]
查看完整版本: putchar的问题