问题
填空题
以下程序运行后的输出结果是 _______ 。struct NODE{int k;struct NODE *link;};main(){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"); }
答案
参考答案: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。