首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动ma
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动ma
admin
2017-07-27
59
问题
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #include<stdlib.h>
3 typedef struct aa
4 {int data; struct aa *next;} NODE;
5 int fun(NODE *h)
6 { int sum=0;
7 NODE *p;
8 /**********found**********/
9 p=h;
10 while(p)
11 { if(p->data%2==0)
12 sum+=p->data;
13 /**********found**********/
14 p=h->next;
15 }
16 return sum;
17 }
18 NODE *creatlink(int n)
19 (NODE *h,*p,*s;
20 int i;
21 h=p=(NODE*)malloc(sizeof(NODE));
22 for(i=1;i<=n;i++)
23 {s=(NODE *)malloc(sizeof(NODE));
24 s->data=rand()%16;
25 s->next=p->next;
26 p->next=s;
27 p=p->next;
28 }
29 p->next=NULL;
30 return h;
31 }
32 outlink(NODE *h,FILE *pf)
33 {NODE *p;
34 p=h->next;
35 fprintf(Pf,’’in\nTHE LIST:in\n HEAD’’);
36 while(p)
37 {fprintf(pf,’’->%d’’,p->data); p=p->next;}
38 fprintf(pf,’’in’’);
39 }
40 outresult(int s,FILE *pf)
41 { fprintf(pf,’’\nThe sum of even numbers:%d\n’’,s);}
42 main()
43 { NODE *head;int even;
44 head=creatlink(12);
45 head->data=9000;
46 outlink(head,stdout);
47 even=fun(head);
48 printf(’’\nThe result:in’’); outresult(even,stdout);
49 }
选项
答案
(1)p=h->next; (2)p=p->next;
解析
(1)根据题干中求得除了头结点之外的结点数据域中的数据值,头指针h,工作指针p指向头结点的下一个结点,所以第一个标识下的“p=h;”指向头结点应该改为指向下一个结点“p=h->next;”。
(2)工作指针p,利用p实现对链表的遍历,p表示指向链表的当前结点,所以指向下一个结点应该是“p=p->next;”。
转载请注明原文地址:https://kaotiyun.com/show/HKDp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
以下叙述中不正确的是()。
有以下程序:#include<stdio.h>intf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f(a,2);printf("%d\n",s);}i
设有如下定义:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正确的赋值语句是()。
在三级模式之间引入两层映像,其主要功能之一是()。
定义如下变量和数组:inti,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是()。for(i=0;i<3;i++)printf("%d",x[i][2-i]);
以下函数定义的类型符是()。fff(doublex){printf("%f",x+x);}
阅读以下程序#include<stdio.h>main(){IntCase;floatprintF;printf("请输入2个数:");scanf("%d%f",&Case,&printF);print
下列关于线性链表的描述中,正确的是()。I、只含有一个指针域来存放下一个元素地址Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)Ⅲ、结点由两部分组成:数据域和指针域。
若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()。
C语言的基本单位是()。
随机试题
唐氏综合征(21-三体综合征)根据核型分析可分为哪几型?
考生文件夹下存在一个数据库文件“samp3.mdb”,里面已经设计好表对象“tEmployee”、“tAttend”和“tWork”,查询对象“qT”,宏对象“ml”。同时还设计出以“tEmployee”为数据源的窗体对象“fEmployee”和以“qT”
患儿男性,4个月,反复呕吐2个月。患儿母乳喂养,呕吐以餐后为主,每天3~5次,吐奶后可再次进食,无呕血,无面色发绀,有哭闹,体重增长欠佳。查体:体温36.8℃,精神佳,前囟平,唇湿润,心肺听诊无殊,腹平软,肝脾无肿大,肠鸣音正常。血常规、肝功能无异常。
下列关于丙型肝炎的描述哪项是正确的
A.15°B.60°C.70°D.80°E.140°上颌中切牙的长轴与下颌中切牙的长轴的交角约为
A.避光B.密闭C.密封D.阴凉处E.冷处将容器密闭,以防止尘土及异物进入
对受力不大、焊接部位难以清理的焊件,应选用的焊条是()。
总会计师属于()。
教育目的反映人的需要和动机,是人们共同活动的基础,它不仅能指导整个实践活动过程,而且也能鼓舞人们为实现共同的目标而努力。这是教育目的的()
Canyourememberwhatyouateyesterday?Ifasked,mostpeoplewillbeabletogiveavaguedescriptionoftheirmainmeals:bre
最新回复
(
0
)