问题
填空题
以下程序运行后的输出结果【 】。 struct NODE {int k; struct NODE *link; }; main() {structNODEm[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"); }
答案
参考答案:13431
解析:程序执行过程如下:p=m,q=m+4,条件9!=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:执行 p->k=++i;,由于是"后加",所以m[4].k=3,i=4,q-后,q=m+2; p=m+2,q=m+2,条件p!=q不成立,则执行p->k=i;即m[2].k-4;故输出的值为13431。