可不可以解读一下,尤其是第二个for循环

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

将字符串向左移动三次,假定给字符串为12345678,移动后变为45678123

采纳一下