while循环条件不满足,啥也没干。i还是1
第一个for循环从2到1循环两次,a[3]=a[2]=5;a[2]=a[1]=4,这是数组a元素是1,4,4,5,0
a[i]=k,就是a[1]=3,a数组为1,3,4,5,0
最后输出for循环四次,输出数组a的前四个元素。因此输出内容为:
1 3 4 5
过程如下:
初始时:
i=1;n=3;k=3;
int a[5]={1,4,5}
while循环 :
i<n&&k>a[i] 此时,1<3 && 3>4 不成立 i++不执行。while循环结束
for循环:
j=n-1=2; j>=i(即2>=1)成立,a[2+1] = a[2],即a[3] = 5;
j--,j=1; j>=i(即1>=1)成立,a[1+1] = a[1],即a[2]= 4;
j--,j=0; j>=i(即0>=1)不成立,for循环结束
a[i] = k=3, i=1, 即a[1] =3;
最后的 for 循环遍历0到n(n=3)的元素
a[0]=1
a[1]=3;
a[2]=4
a[3]=5;
所以最后的结果就是 1 3 4 5