问题 填空题

以下程序运行后的输出结果是()。

struct NODE

{int num;struct NODE *next;

};

main()

{struct NODE s[3]={{1,’\0’},{2,’\0’},{3,’0’}},*p,*q,*r;

int sum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=s; q=p->next; r=q->next;

sum+=q->next->num; sum+=r->next->next->num;

printf("%d\n",sum);

}

答案

参考答案:E

解析:

[评析]程序通过语句“s[0].next=s+1;s[1].next=s+2;s[2].next=s;”将结构体变量s中各结点链接成了一个循环链表,即最后一个结点的指针域指向了头结点(s[2].next=s;),整个链表形成一个环,并通过语句“p=s;q=p->next;r=q->next;”将结构体指针变量p、q、r指向了各结点,具体结构如下图: 故本题输出的sum=3+2=5。

单项选择题 A1/A2型题
单项选择题