以下程序运行后的输出结果是______。 struct NODE { int hum; struct NODE *next; }; main ( ) { struct NODE s[3]

admin2009-01-15  28

问题 以下程序运行后的输出结果是______。
    struct  NODE
    {
       int hum;
       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->nexs->num;
       sum+=r >next->next->num:
       prlntf("%d\n",sum ;
    }

选项

答案5

解析 主函数首先声明了一个结点数组s[3],并分别初始化其成员num为1,2、 3,而成员next全部被初始化为’\0’,也就是0。下面又用三条语句s[0].next=s+1;s[1].next=s+2;s[2].next=s;分别将三个结点指向其后面一个结点,而最后一个结点指向笫1个结点,构造出一条单向循环链表。接下来用结点指针p=s即让其指向s[0],然后让 q=p->next,即指向了 s[1],r=-q->next即让r指向s[2],然后让一个累计变量sam累加q->next->hum和 r->next->next->num,因为q指向s[1)所以它的next指针指向的是s[2],故第1次累加的是s[2].num=3,而r指向的是s[2]所以它的next是s[0],s[0]的next指向s[1],故笫2次累加的是s[1].num=2。所以程序最终输出结果为5。
转载请注明原文地址:https://jikaoti.com/ti/vrK0FFFM
0

最新回复(0)