求解一道c语言填空题:以下程序运行后的输出结果是()

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);
}
这道题目讲的什么意思完全没有看懂啊。

第1个回答  2012-01-18
s0的下一个指向s1,s1的下一个指向s2,s2的下一个指向s0,p指向s0,q指向s1,r指向s2,所以sum=q->nextt->num(即s1的num--2)+r->next->next->num(即s2的num3)=5
最后答案5追问

你好 我最后两步没有看懂 sum=q->next->num(即s1的num---2)+r->next->next->num(即s2的num---3)=5 我觉得应该是q指向s1 所以它的next指向S2 故应该是3 后面那个是2

第2个回答  2012-01-18
程序前面加一句:#include <stdio.h>
sun=0x0005追问

恩恩 只是填空题目 不深入追究

第3个回答  2012-01-18
做这道题首先要知道牵涉到的链表。结构体等知识,主函数前定义的就是结构体,我做出来的答案是5追问

恩 是5 我没有太看懂题目的意思 麻烦帮我解答下

追答

struct NODE s[3]={{1,'\0'},{2,'\0'},{3,'\0'}}这句懂吧,是定义结构体元素的值,不知道你学过结构体,链表和指针没有,说起来有点麻烦,你先说下你学到哪种程度了吧

追问

我前面的都看得差不多了 就是后面的几节不想看书了 只是为了今年3月24日的国二考试(笔试) 所以现在碰到题目大部分都是后面的 要去深入学习的话 时间就太长了 所以想直接做真题和预测题 边学边练

追答

作为一个大一的刚考完C的孩纸,我表示,C的精华就在后面啊,亲,书还是得看的
我就先跟你详细讲下试试你听得懂不,要真听不懂你还是先去看书吧struct NODE
{
int num;
struct NODE *next;
};这部分是定义一个结构体,元素有一个整形的num和一个结构体指针next所谓结构体指针就是指向一个结构体的指针罗,struct NODE s[3]={{1,'\0'},{2,'\0'},{3,'\0'}},这部分是为有三个元素的结构体数组赋初值,这时三个指针都是空指针型,不指向任何空间,s[0].next=s+1;s[1].next=s+2;
s[2].next=s;在这就建立链表了s+n就是s[n]的首地址,即把每个结构体数组元素的next指向下一个元素
p=s;
q=p->next;
r=q->next;这三句就表示三个结构体指针分别指向s[0].s[1].s[2],
sum+=q->next->num;
sum+=r->next->next->num;其中q->next->num是q指向的结构体元素的下一个元素的num值就是s[2]的num值3,下面的一句雷同,sum=0+3+2=5,最后输出。。。不晓得你懂没有,打那么多累死了o(╯□╰)o

追问

嗯咯 还好 看懂了 我现在大二了 大一的时候学校只要求考省二就轻松得过了 不过省二对c语言后面的不做什么要求 就没怎么看 结果直接报了国二 没想到笔试木有过啊 发现好多题目是后面滴 你讲得很有道理 现在寒假我也要好好看会书啦 谢谢啦

本回答被提问者采纳
相似回答