首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。 其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。 其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。
admin
2013-06-12
34
问题
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数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全国计算机二级
相关试题推荐
结构化程序设计主要强调的是______。
以下程序的输出结果是______。 main () { int x=5,n=3,s,j; for(j=0;j<2;j++) { s=fun(x,n); printf("%d",s); } } fun(int a,int b) { static int n=
以下程序的输出结果是______。 main() { union { char i[2];int k;} r; r.i[0]=2;r.i[1]=0; printf("%d\n"r.k); }
下列程序的输出结果是______。 struct abc { int a,b,c;}; main () { struct abc s[2]={{1,2,3},{4,5,6}}; int t;t=s[0].a+s[1].b; printf("%d\n",t)
若以下程序所生成的可执行文件名为filel.exe,当执行该程序时输入FILE1 CHINA BEIJING SHANGHAI,程序的输出结果是______。 main (int argc,char* argv[]) { while(--argc>0){
数据库系统中实现各种数据管理功能的核心软件称为______。
设有以下定义和语句 int a[3][2]={1,2,3,4,5),*p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是______。
执行以下程序后,输出’*’号的个数是______。#include<stdio.h>main(){inti,j;for(i=1;i<6;i++)for(j=2;j<=i;j++)putch
有如下程序main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];prin
随机试题
要选定多个连续的文件,先单击第一个文件,然后按下()键不放,单击最后一个文件,则两者之间的所有文件均被选中。
试述缔约过失责任的构成要件。
Manytrees______theirleavesinautumnbecauseoftheweathergettingcold.
Mostepisodesofabsent-mindedness-forgettingwhereyouleftsomethingorwonderingwhyyoujustenteredaroom—arecausedbya
关于唾液腺肿瘤免疫组织化学染色叙述正确的是()
患者,女,31岁。素患肠痈,连日来右下腹阵阵作痛,口苦便干,宜与大黄配伍使用的药物是()
A、大黄素B、芦荟大黄素C、大黄素-8-O-葡萄糖苷D、芦荟苷E、番泻苷A泻下作用最强的化合物是()
治疗风湿性二尖瓣狭窄药物中,青霉素的作用是防止()
施工成本的计划值和实际值也是相对的,相对于()而言,施工成本规划的成本值是实际值。
证券经纪业务的合规风险主要是指证券公司在经纪业务活动中发生违反法律、行政法规和监管部门规章及规范性文件、行业规范和自律规则、公司内部规章制度、行业公认并普遍遵守的职业道德和行为准则等行为,可能使证券公司受到法律制裁、被采取监管措施、遭受财产损失或声誉损失的
最新回复
(
0
)