问题 填空题

以下程序运行后的输出结果是 【17】
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[i].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。

单项选择题
单项选择题