希望可以具体讲解一下

下面程序段的运行结果是(  )

int i=O, a[]={3,4,5,4,3};

do{

a[i]++;

}while(a[++i]<5);

for(i=0;i<5;i++)

printf(“%d”,a[i]) ;

A. 45654 B.34543 C.45554 D.45543

首先执行a[i]++,此时的i为0,也就是a[0]++,本来a[0]为3,于是加1后变为4,这样数组就变成数组为{4,4,5,4,3},然后判断条件是a[++i]<5,也就是判断a[1]<5是否成立,a[1]=4,符合,于是继续循环。继续执行a[i]++,此时的i为1,也就是a[1]++,本来a[1]为4,于是加1后变为5,这样数组就变成数组为{4,5,5,4,3},然后判断条件是a[++i]<5,也就是判断a[2]<5是否成立,a[2]=5,不符合,所以退出循环,所以最后结果就是45543