for(i=0;a[i]!='\0';i++) { b[i]=(a[i]-'a'+K)%26+'a'; }
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/09/15 05:48:54
for(i=0;a[i]!='\0';i++) { b[i]=(a[i]-'a'+K)%26+'a'; }
凯撒密码的部分,请详解下for语句里头每一步的意思~
凯撒密码的部分,请详解下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,超出字母表范围.
再问: a,b分别都是字符串数组,我就是不懂为什么数组a[]可以减去'a'以及数字k,是c中规定的么,字母减去'a'为取地址,减数字为移位,是规定?那+‘a'与-'a'的分别?
再答: 不是,c或者c++中,字符,相当于一个无符号整数,可以与其他数字进行加减运算,乘除运算意义不大,你可以试一下,int i=‘a’,cout
再问: a,b分别都是字符串数组,我就是不懂为什么数组a[]可以减去'a'以及数字k,是c中规定的么,字母减去'a'为取地址,减数字为移位,是规定?那+‘a'与-'a'的分别?
再答: 不是,c或者c++中,字符,相当于一个无符号整数,可以与其他数字进行加减运算,乘除运算意义不大,你可以试一下,int i=‘a’,cout
i=(a+k)
int i=3,k; a=(++i)+(i++)+(++i); b=(++i)+(++i)+(i++); c=(++i)
for(i=0; a[i]=='0' && i
{int a[4],i,j,k; for (i=0;i
void fun(int *a,int n) { int i,j,k,t; for(i=0;i
main() {int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d
{ int a[6][6],i,j,k,m,max; k=0; m=0; for(i=0;i
main() { int i,a[10]; for(i=0;i=0;i--) printf("%d ",a[i]); }
int i=1,a=0; for(;i
main( ) {int i,a[5]; for(i=0;i2))%5; for(i=4;i>=0;i--) print
java :类A A a[]=new A[200]; for (int i = 0; i < 10; i++) { A
int a[10],i ;for(i = 1; i