以下程序运行后的输出结果是______。 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
解析:[解析[ m是结构数组,长度为5。结构指针p、q分别指向m[0]、m[4],i初值为0.while循环当p和q不相等时,执行“p->k=++i;q->k=i++;”,也就是m[0].k值为1,m[4].k值为1,i值变为2,则“p++,q--”,p、q分别指向m[1]、m[3],while循环当p和q不相等时,执行“p->k=++i;q->k=i++;”,也就是m[1].k值为3,m[3].k值为3,i值变为4,“p++,q--”,p、q都指向m[2],while循环当p和q相等时,循环停止。while循环体后面的“q->k=i;”,也就是m[2].k值为4。因此“for(i=0;i<5;i++)printf("%d",m[i].k);”输出结果是:13431。