有以下程序: #include<stdio.h> struct NODE { int k; struct NODE *next; }; main() {

admin2022-10-25  27

问题 有以下程序:
     #include<stdio.h>
     struct NODE
     {
       int k;
       struct NODE *next;
     };
     main()
     {
       struct NODE m[5],*p=m,*q=m+4;
       int i=0;
       while(p!=q)
       {
         p->k=++i;p++;
     q->k=1++;q--;
     }
     q->k=i:
     for(i=0;i<5;i++)printf(”%d”,m.k);
     printf(”\n”);
   }
     程序运行后的输出结果是(          )。

选项 A、13442
B、13431
C、01234
D、02431

答案 B

解析 main函数中定义了包含5个元素的数组m,每个元素都是NODE类型。指针p指向数组第1个元素,指针q指向数组最后一个元素。while循环使用p、q从首尾向中间遍历,遍历的同时为各个元素赋值。所以第1轮循环,i的值为0,先执行++i,值为1,后执行i++,值也为1,m[0].k和m[4].k的值都为1;第2轮循环,i的值为2,先执行++i,值为3,后执行i++,值也为3,m[1].k和m[3].k的值都为3;第3轮循环,p和q指向的都是m[2]元素,指针相同,循环结束,此时i的值为4,即m[2].k的值为4。综上,程序输出:13431。本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/4Rkp777K
0

最新回复(0)