首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。 其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。 其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。
admin
2013-06-12
61
问题
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。
其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。
请改正程序中的错误,使它能得到正确结果。
[注意] 不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
#include<stdio.h>
#include<stdiib.h>
typedef struct aa
{
int data;
struct aa *next;
}NODE;
int fun(NODE *h)
{
int sum=0;
NODE *P;
/**********found**********/
p=h;
while(P->next)
{
if(p->data%2==0)
sum+=p->data;
/**********found**********/
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{
NODE *h, *p, *s, *q;
int i, x;
h=p=(NODE *)malloc(si zeof(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)错误:while(p->next) 正确:while(p!=NULL)或while(p) (2)错误:p=h->next; 正确:p=p->next;
解析
错误1:循环时要注意循环中止的条件是p!=NULL(最后一个结点为空,就像字符串的最后一个字符为结尾标志符’\0’一样),while(p->next)使循环提前结束,所以应改为while(p!=NULL)或while(p)。
错误2:当累加完后,应该把指针指向下一个结点的指针赋给p,而不是把头指针指向的下一个结点赋给p,否则还会造成死循环,所以p=h->next;应该改为p=p->next;。
转载请注明原文地址:https://kaotiyun.com/show/GrJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
有如下程序 int func(int a,int b) {return (a+b);} main() { int x=2,y=5,z=8,r; r=func(fnnc(x,y),z); printf("%d\n",r); } 该程序的输出结果是______
若有以下说明和定义 union dt { int a;char b; double c;} data; 以下叙述中,错误的是______。
以下程序的输出结果是______。 main() { union { char i[2];int k;} r; r.i[0]=2;r.i[1]=0; printf("%d\n"r.k); }
数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。
软件工程研究的内容主要包括:______技术和软件工程管理。
以下程序的输出结果是______。 #include<stdio.h> main() { int a=5,b=4,c=6,d; printf("%d\n",d=a>b?(a>c?a:c):(b)); }
单链表要求内存中可用存储单元的地址______。
下列程序是处理C盘根目录下的a.txt文件,统计该文件中字符的个数。请填空,使程序完整。#include<stdio.h>main(){FILE*fp;charch;longnum=0;if
随机试题
PRIMERECRUITMENTEmploymentrecordSurname:LamertonEmail:【L1】________@worldnet.comNationality:【L2】________ReferenceName:
《普遍优惠制原产地证明书(申报与证明联合)格式A》的有效期一般为()
Thebookis______moredifficultthantheoneIrecommendedtoyou.
患者,男,38岁,突然呕血约1500m1,伴柏油样大便,急诊入院。查体:神志清楚,四肢发凉。此时的护理措施哪项不正确
细胞膜的静息电位主要是()
A、牙数目异常B、牙齿形态异常C、牙齿结构异常D、牙齿萌出异常E、牙齿结构形态均异常;下列牙齿发育异常的类型四环素牙
男,70岁。下楼时不慎摔伤右髋部,查体右下肢短缩。外旋50°畸形,右髋肿胀不明显,但有叩痛。为证实诊断首先需要的检查是
某施工单位与A材料供应商订立了材料买卖合同,却误将货款支付给B材料供应商,随后施工单位索要回货款支付给A供应商。关于本案中债的性质,下列说法中正确的有()。
公文行文制度的核心是()。
强行带离现场,属于人民警察依法采取的()。
最新回复
(
0
)