我的世界时运斧头:后天考c语言,可是复习时候碰到一些困难,请问大家帮忙解答!急22

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 06:03:28
(17)以下程序运行后的输出结果是 【17】 。
?? 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为什么阿 我看不懂 不明白.

? int i=0;
?? while(p!=q){
?? p->k=++i; p++; /*运行到这里时,p->k==1;i=1;
++i为i先加1,再将值赋给p->k,所以数组中第一个数为1*/
?? q->k=i++; q--; /*到这里时,q->k==1,i=2;i++为先给q->k赋值,再自加1。当第二次循环时,i从2开始,p->k==3;i==3,q->k==3,i==4,
第三次时,p==q,终止了循环*/
?? }
? q->k=i; /*运行后,q->k==4*/
最终数组中存放的数据从头开始为 1,3,4,3,1