void main()
{ char a[8],temp; int i,j;
for(i=0;i<7;i++) a[i]='a'+i;
for(i=0;i<3;i++) {
temp=a[0]; for(j=1;j<7;j++) a[j-1]=a[j];
a[6]=temp;a[7]='\0';
printf("%s\n",a);
执行的变化如下:
生成原始数组排列:
a[0]=a a[1]=b a[2]=c a[3]=d a[4]=e a[5]=f a[6]=g
循环三次数组移动的变化:
i=0:
a[0]=b a[1]=c a[2]=d a[3]=e a[4]=f a[5]=g a[6]=a
i=1:
a[0]=c a[1]=d a[2]=e a[3]=f a[4]=g a[5]=a a[6]=b
i=2:
a[0]=d a[1]=e a[2]=f a[3]=g a[4]=a a[5]=b a[6]=c
最后输出的字符串:
defgabc
第二个循环是双循环,是将字符串向左循环移动三次,比如字符串abcdefg,移动后变为defgabc