首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序MODll.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不
给定程序MODll.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不
admin
2015-06-08
70
问题
给定程序MODll.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
typedef struct aa
{ int data;struct aa *next;)NODE;
int fun(NODE*h)
{ int sum=0;
NODE * P;
/**********found***********/
p=h;
while(P)
{ i f(P一>data%2==0)
sum+=p一>data;
/**********found***********/
p=h一>next;
}
retumR sum;
}
NODE * creatlink(int n)
{NODE *h,*P,*s;
int i;
h=p=(NODE*)malloc(sizeof(NODE));
for(i=1;i<=n;i++)
{s=(NODE*)malloc(sizeof(NODE));
s一>data=rand()%16;
s一>next=p一>next;
P一>next=s ;
p=P一>next ;
}
P一>next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{NODE *P;
P=h一>next;
fprintf {pf,“\n\ nTHE LIST:\n\n
HEAD”);
while(P)
{ fprintf(pf,“一>%d”,P一>data);
p=p一>next;}
fprintf(pf,“\n”);
}
outresult(int s,FILE *pf)
{ fprintf(pf,“\nThe sum of even numbers:%d\n”,s);}
main()
{NODE *head; int even;
head=creatlink(12);
head一>data=9000;
outlink(head,stdout);
even=fun(head);
printf(“\nThe result:\n”);
outresult(even,stdout);
}
选项
答案
(1)p=h一>next; (2)p=p一>next;
解析
(1)该题中函数功能是单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。对单向链表进行遍历,并在遍历过程查找数据域为偶数的结点,并将数据域为偶数的元素累加起来。
(2)从已给定源程序的main主函数开始入手,“head=creatlink(12):”语句生成随机数的链表,“outlink(head,stdout);”输出输出该链表,“even=fun(head);”语句调用函数。fun求得涟表中的数据域为偶数的值的累加和。
[解题思路]
(1)根据题干中求得除了头结点之外的结点数据域中的数据值,头指针h,工作指针p指向头结点的下一个结点,所以第一个标识下的“p=h:”指向头结点应该改为指向下一个结点“p=h->next;”。
(2)工作指针p,利用p实现对链表的遍历,p表示指向链表的当前结点,所以指向下一个结点应该是“p=p.>next;”。
转载请注明原文地址:https://kaotiyun.com/show/6aJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是______。
有如下程序main(){intx=3;do{printf("%d",x--);}while(!x);}该程序的执行结果是______。
下面invert函数的功能是将一个字符串str的内容颠倒过来。请填空。 #include<string.h> voidinvert(charstr[]) {inti,j【】; for(i=0,j=strlen(str)
注释说明了程序的功能,它分为【】注释和功能性注释。
以下程序的输出结果是_______。main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);
库函数strcpy用以复制字符串,若有以下定义和语句:charstr1[]="china",str2[10],*str3,*str4="china";则对库函数strcpy的正确的调用是_______。
设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是_______。
下列语句中符合C语言语法的赋值语句是_______。
下述关于数据库系统的叙述中正确的是_______。
在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_______。
随机试题
安全没有保障,随时可能发生垮坝事故的尾矿库称为()。
A.过氧化物酶强阳性B.中性粒细胞碱性磷酸酶偏低C.非特异酯酶染色阳性,可被氟化钠抑制D.细胞内铁染色强阳性E.糖原染色阳性,呈块状或颗粒状以上细胞化学染色有助于诊断下列疾病的是
【2004年第147题】土的含水量ω的定义,下列何种说法是正确的?
医疗废物集中处置单位的贮存、处置设施,应当( )。
建设单位于2011年6月14日竣工验收合格,则建设单位应当在()前,将建设工程竣工验收报告和规划、公安消防、环保等部¨出具的认可文件或者准许使用文件,报建设行政主管部门或者其他有关部门备案。
用友报表系统中,()定义了报表数据之间的运算关系,可以实现报表系统从其他子系统取数的功能,所以必须定义它。
在对外货物贸易统计中所使用的价格是:()。
已经采用公允价值模式计量的投资性房地产,不得从公允价值计量模式转为成本计量模式。()
下列程序执行后的输出结果是______。 main() { char arr[2][4]; strcpy(arr,"she");strcpy(arr[1],"he"); arr[0][3]=’&’; printf("%s\n",arr); }
Theprimeministerinsistedthat____________(成立委员会)tolookintothematter.
最新回复
(
0
)