for(i=0;a[i]!='\0';i++) { b[i]=(a[i]-'a'+K)%26+'a'; }凯撒密码的部分,请详解下for语句里头每一步的意思~

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 17:46:54

for(i=0;a[i]!='\0';i++) { b[i]=(a[i]-'a'+K)%26+'a'; }凯撒密码的部分,请详解下for语句里头每一步的意思~
for(i=0;a[i]!='\0';i++) { b[i]=(a[i]-'a'+K)%26+'a'; }
凯撒密码的部分,请详解下for语句里头每一步的意思~

for(i=0;a[i]!='\0';i++) { b[i]=(a[i]-'a'+K)%26+'a'; }凯撒密码的部分,请详解下for语句里头每一步的意思~
a[i]是一个字符数组.K是一个变量,也可能是预先定义好的常变量,就是说b[i](应该是输出字符串 ) 的字符是在既定的a[i]的基础上偏移一个数值.例如K=1,那么,b[i]=a[i]+1,就是如果a[1]='a',那么b[1]='b',如果a[1]='z',则a[1]='a';如此类推,同理,如果K=2,则如果a[1]='a',那么b[1]='c',如果a[1]='z',则a[1]='b';如此类推 .a[i]-'a'就是获得a[i]的在26字母表中的位置,中间主要执行的是%26,也就是模26运算,此运算是防止超出范围的限制,因为如果a[i]='z',k=1,那么(a[i]-'a'+K)+'a'= 'z'+1,超出字母表范围.