为什么要写 c1=(c1-'a'+3)%26+'a';而不直接写c1=c1+3;呢
if(c1>='a'&& c1<='z')
c1=(c1-'a'+3)%26+'a';
if(c2>='a'&& c2<='z')
c2=(c2-'a'+3)%26+'a';
if(c3>='a'&& c3<='z')
c3=(c3-'a'+3)%26+'a';
if(c4>='a'&& c4<='z')
c4=(c4-'a'+3)%26+'a';
if(c5>='a'&& c5<='z')
c5=(c5-'a'+3)%26+'a';
printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
return 0;
}
比如c1 = 'z' ,你c1 = c1 + 3的话,就不是字符了啊。所以要循环,'z'要变成'c'。
用c1='y' 代入运算下,c1 = c1 + 3 = 'y' + 3 = 121 + 3 =124 ,ASCII 值为124的字符是 ‘|’ ,已经不是英文字符了。
这样可以保证所得结果依然在a到z的范围内,如果是c1=c1+3的话,当c1=x,y,z时就超出了a到z的范围