这个问题没有啥难度,
首先,把程序的格式调整一下:
if(a[i])
{
if(first)
first=0;
else
printf(" "); //1
printf("%d",i); //2
}
printf("\n"); //3
下面,这个就很好分析了,程序中共有3个printf语句:
(1)对于1来说,只有程序走else分支,才会执行
(2)对于2来说,只有a[i]为真,才会执行
(3)对于3来说,程序总会执行
这样就可以根据条件,判断printf的执行顺序。
如果a[i]不等于0且first等于0,那么输出是:空格,i,换行
如果a[i]不等于0且first不等于0,那么输出是:i,换行
如果a[i]等于0,那么输出时:换行