以下程序运行后的输出结果是______。 struct NODE { int k; struct NODE *link; }; main() struct NODE m[5],*p=m,

admin2009-01-15  30

问题 以下程序运行后的输出结果是______。
   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.k);
        printf("\n");

选项

答案13431

解析 本题看似考查链表的知识,其实只是考查了结构体数组。程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和两个结构体指针p和q,并分别初始化p指向m(指向数组的第一个元素);q指向m+4(指向数组的最后一个元素)。接下来定义并初始化一个整型变量i为0。然后用一个while循环。在p和q不相等的时候执行循环体:让p所指结构体的成员k等于++i的值,然后让p指向下一个结构体;让q所指结构体的成员k等于i++的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两个表达式的值依次分别为1和1、3和 3……。所以当p叫循环结束时,实际循环了两次, p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。
转载请注明原文地址:https://kaotiyun.com/show/tBXp777K
0

相关试题推荐
最新回复(0)