首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数
admin
2019-09-02
34
问题
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<stallib.h>
typedef struct aa
{int data;struer aa*next;}NODE;
int fun(NODE*h)
{ int sum=0;
NODE*p;
/**********found**********/
p=h;
while(p)
{ if(p->data%2==0)
sum+=p->data;
/**********found**********/
p=h->next;
}
return sum;
}
NODE*creatlink(int n)
{NODE*h r*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)
fNODE*p;
p=h->next;
fprintf(pf,"\n\nTttE 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);}
itlain()
{NODE*head;int even;
head=creatlink(12);
head->data=9000;
outlink(head,stclout);
even=fun(head);
printf("\nThe result:\n");outEesult(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://jikaoti.com/ti/Rsf0FFFM
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
给定程序MODI1.C中函数fun的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入"Ab,cD",则输出"AB,CD"。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数
有以下程序#includevoidfun(char*a,char*b){while(*a==’*’)a++;while(*b=*a){b++;a++;}}main(){char*s="*a*b*",t[
有以下程序voidfun(char*S){chara[10];strepy(a,"STRING");S=a;}main(){char*p="PROGRAM";fun(P);一printf("%s\n,p);}.程序运行后的输出
下面选项中合法的字符常量是
以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是
以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是
s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是
有两个关系R和S如下: 则由关系R得到关系S的操作是
设数据集合为D={1,3,5,7,9},D上的关系为R,下列数据结构B=(D,R)中为非线性结构的是()。
当用户要求输入的字符串中含有空格时,应使用的输入函数是
随机试题
儿童身心发展有两个高速发展期—一新生儿期与青春期。这是身心发展()规律的反映。
我国的政党制度是中国共产党领导下的________和政治协商制度。
男,40岁,患糖尿病10余年,尿蛋白阴性,近1个月感下腹部胀,排尿不畅伴尿失禁。B超显示:膀胱扩大,尿潴留。其原因应考虑()
木模板及其支架的设计应符合现行国家标准《木结构设计规范》的规定,其中受压立杆除满足计算需要外,其梢径不得小于()mm。
某企业2017年初委托施工企业建造仓库一幢,9月末办理验收手续,仓库入账原值400万元;9月30日将原值300万元的旧车间对外投资联营,不承担联营风险,当年收取固定收入10万元(不含税)。当地政府规定房产原值扣除比例为30%。2017年度该企业上述房产应缴
儒家经典中,四书是指()。
费希纳定律表明()。
血红蛋白对血液酸碱平衡的调节发生在()。
"TheIcarusGirl"isthestoryof8-year-oldJessamyHarrison,nicknamedJess.ThedaughterofaNigerianmotherandanEnglish
Forthispart,youareallowed30minutestowriteashortessayonthetopicofReuseofTextbooksinSchools.Youshouldwrite
最新回复
(
0
)