首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序MODIl.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不
给定程序MODIl.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不
admin
2016-10-29
102
问题
给定程序MODIl.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
typedef struct aa
{ int data;struct aa*next;}NODE;
int fun(NODE*h)
f int sum=0 ;
NODE*;
/***********found**********/
p=h ;
while(P)
{ if(p->data%2==0)
sum+=p->data;
/***********found**********/
p=h->next;
}
return sum;
NODE*creatlink(int n)
fNODE*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:\nkn
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);)
msin()
{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)根据题干中求得除了头结点之外的结点数据域中的最大值,头指针h,工作指针P指向头结点的下一个结点,所以第一个标识下的“p=h;”指向头结点应该改为指向下一个结点“p=h->next;”。
(2)工作指针p,利用p实现对链表的遍历,p表示指向链表的当前结点,所以指向下一个结点应该是“p=p->next;”。
转载请注明原文地址:https://kaotiyun.com/show/MkDp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下列程序的运行结果是______。#include<stdio.h>main(){intfun();fun();}fun()
设有以下语句:charstrl[]="string",str2[8],*str,*str4="string";则______不是对库函数的正确调用。
以下程序段的输出结果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);put
以下程序的输出结果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){sta
fseek函数的正确调用形式是【】。
不能把字符串"HELLO!"赋绐数组b的语句是______。
在下列几种排序方法中,要求内存量最大的是______。
以下程序通过函数SunFun求。这里f(x)=x2+1,由F函数实现。请填空。main(){printf("Thesum=%d\n",SunFun(10));}SunFun(intn){int
用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非O数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序
随机试题
根据十九大精神,全面从严治党需要把()摆在首位。
下列有关报价先后的说法中,正确的有()
计算机系统的硬件主要包括运算器、_______、存储器、输入设备、输出设备五大部分组成。
数字化彩超的关键技术是
船舶碰撞,是由于()的原因造成的,碰撞各方相互不负赔偿责任。
根据下列经济业务编制会计分录资料:某企业2009年10月份发生下列经济业务:1.10月1日,企业从银行借入期限为6个月的借款500000元,存入银行。2.10月2日,总经理出差归来报销差旅费4500元,交回多余现金500元。3.10月5日,以银
陆先生在人身保险合同中指定了数人作为自己的受益人,后陆先生突然病故,在其去世前未确定受益人的受益顺序和受益份额,那么其受益人应按照( )享有受益权。
国务院某部委出台一部行政规章,规定对某种行政违法行为不仅要处罚该单位,还要给予直接责任人罚款的处罚。但有关规定这一违法行为处罚的行政法规并没有规定对直接责任人给予行政处罚。以下表述错误的有()。
下列说法正确的是()。
已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是()。
最新回复
(
0
)