填空题
以下程序运行后的输出结果是 1 。
struct NODE
{ int k;
struct NODE *link;
};
main2
{ struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q){
p->k=++i; p++;
q->k=i++; q--;
}
q->k=i;
for(i=0;i<5;i++) printf("%d",m[i].k);
printf("/n");
}
【正确答案】
1、13431
【答案解析】程序执行过程如下:p=m,q=m+4,条件 p!=q 成立,执行 p->k=++i;,由于是“前加”,所以 m[0].k=1,执行 p++后 p=m+1;执行 q->k=i++;,由于是“后加”,所以 m[4].k=1,然后使得 i 加上 1,即 i=2,q--后,q=m+3; p=m+1,q=m+3,条件 p!=q 成立,执行 p->k=++i; ,由于是“前加”,所以 i=3,m[0].k=3,执行 p++后 p=m+2; 执行 q->k=i++; ,由于是“后加”,所以 m[4].k=3,i=4,q--后,q=m+2;p=m+2,q=m+2,条件 p!=q 不成立,则执行 q->k=i;即 m[2].k=4;故输出的值为 13431。