c语言问题求解

if(a[i])
{
if(first) first=0;else printf(" ");printf("%d",i);
}
printf("\n");
两个printf 的输出顺序

这个问题没有啥难度,

首先,把程序的格式调整一下:

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的执行顺序。

追问

那是先换行还是先输出i?

追答

到底先输出i还是先换行,根据的是a[i]是不是为0,
如果a[i]不为0的话,那么就先输出i,再换行。
如果a[i]为0的话,那就直接输出换行,不输出i。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-03
如果a[i]不等于0且first等于0,那么输出是:空格,i,换行
如果a[i]不等于0且first不等于0,那么输出是:i,换行
如果a[i]等于0,那么输出时:换行追问

那是先换行还是先输出i?

追答

换行再最后。