首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。 注意
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。 注意
admin
2021-02-25
34
问题
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 #include<stdlib.h>
3 #define N 8
4 struct slist
5 {double s;
6 struct slist *next;
7 };
8 typedef struer slist STREC;
9 double fun(STREC *h)
10 {
11
12 }
13 STREC * creat(double * s)
14 {STREC *h,*p,*q;int i=0;
15 h=p=(STREC *)malloc(sizeof(STREC));p->s=0;
16 while(i<N)
17 {q=(STREC *) malloc(sizeof(STREC));
18 q->s=s
;i++;p->next=q;p=q;
19 }
20 p->next=0;
21 return h;
22 }
23 outlist(STREC *h)
24 {STREC *p;
25 p=h->next;printf(’’head’’);
26 do
27 {printf(’’->%4.1f’’,p->s);p=p-> next;)
28 while(p!=0);
29 printf(’’\n\n’’);
30 }
31 main()
32 {double s[N]={85,76,69,85,91,72,64,87},ave;
33 void NONO();
34 STREC *h;
35 h=creat(s);outlist(h);
36 ave=fun(h);
37 printf(’’ave=%6.3f\n’’,ave);
38 NONO();
39 }
40 void NONO()
41 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
42 FTLE *in,*out;
43 int i,j;double s[N],ave;
44 STREC *h;
45 in=fopen(’’in.dat’’,’’r’’);
46 out=fopen(’’out.dat’’,’’w’’);
47 for(i=0;i<10;i++) {
48 for(j=0 ; j<N;j++)fscanf(in,’’%1f,’’,&s[j]);
49 h=creat(s);
50 ave=fun(h);
51 fprintf(out,’’%6.31f\n’’,ave);
52 }
53 fclose(in);
54 fclose(out);}
选项
答案
1 STREC *p=h->next; /*由于头结点中没有存放数据*/ 2 double av=0.0; /*对计算成绩平均值的变量进行初始化*/ 3 int n=0; 4 while(p!=NULL) {/*判断链表是否结束*/ 5 av=av+p->s; /*对成绩进行累加*/ 6 p=p->next; /*到下一个结点位置*/ 7 n++; /*人数加1 */ 8 } 9 av/=n; /*计算成绩平均值*/ 10 return av; /*返回成绩平均值*/
解析
(1)首先定义存放平均值的变量,并对其初始化。(2)在循环中,依次取链表中存放的成绩,并对其求和。(3)最后计算平均值,并返回值。
转载请注明原文地址:https://kaotiyun.com/show/OItp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
有以下程序:#includemain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--
以下叙述中正确的是
表达式3.6-5/2+1.2+5%2的值是
若有以下程序#includeintk=7;voidf(int**s){int*t=&k;*s=t;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,
若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是
将E-R图转换为关系模式时,实体和联系都可以表示为()。
设有如下程序段:#include<stdio.h>chars[20]="Beijing",*P;P=S:则执行p=S;语句后,以下叙述中正确的是()。
以下叙述中正确的是()。
下面关于位运算符的叙述,正确的是
若有定义:intw[3][5];则以下不能正确表示该数组元素的表达式是
随机试题
以下属于肺阳虚证的临床表现的有
女性,35岁,诉尿频、尿痛、脓尿及血尿1年。尿涂片检查抗酸杆菌(+),排泄性尿路造影见左。肾正常,右肾无功能;逆行肾盂造影显示右肾广泛破坏。最可能的诊断是
税务机关的行政行为()。本案中,在2001年()后该纳税人仍未缴款,税务机关可对其采取具体行政措施。
以对可行权权益工具数量的最佳估计为基础,按照权益工具在授予日的公允价值计算相关的费用成本。()
专业人士之间进行经济学交流要使用教学模型、编制模型,这种方法有利于研究的深入并推动理论的发展。但在专业人士中,也并不都用这些工具和模型。如获得诺贝尔奖的哈耶克、缪尔达尔、刘易斯、舒尔茨、科恩等人都不用模型。经济学的精华是思想而不是工具。作者写这段话旨在说明
设有说明int(*ptr)[M];其中的标识符ptr是()。
Ourape-menforefathershadnoobviousnaturalweaponsinthestruggleforsurvivalintheopen.Theyhadneitherthe【C1】_______
Pub-talk,themostpopularactivityinallpubs,isanativedialectwithitsowndistinctivegrammar.Thereareveryfewrestr
Youwillfindittoyour_____tolearnsomeFrenchbeforeyouvisitParis.
Thereisatrendthatdrugsaremorereadilyavailableandusedbyyouthatayoungeragethaneverbefore.Hair______isprobab
最新回复
(
0
)