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

admin2009-01-15  32

问题 以下程序运行后的输出结果是【  】。
struct NODE
{  int  k;
   struct NODE  *link;
};
main()
{    struct NODE  m[5],*p=m,*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);
   ptintf("\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==q循环结束时,实际循环了两次,p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。
转载请注明原文地址:https://kaotiyun.com/show/fOHp777K
0

最新回复(0)