有以下程序  #include<stdio.h>  struct NODE  {   int k;   struct NODE *next;  };  main()  {   struct NODE m[5],*p=m,*q=m+4;  

admin2022-04-02  23

问题 有以下程序
 #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=i++;q--;
 }
    q->k=i:
    for(i=0;i<s;i++)printf("%d",m.k);
    printf("\n");
 }
 程序运行后的输出结果是(          )。

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

答案B

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

最新回复(0)