首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意:部分源程序在文件PROG1.C中
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意:部分源程序在文件PROG1.C中
admin
2018-09-27
35
问题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 #define N 16
3 typedef atruct
4 { char num[10];
5 int s;
6 } STREC;
7 int fun(STREC *a,STREC *b]
8 {
9
10 }
11 main()
12 {STREC s[N]=({’’GA05’’,85},{’’GA03¨,76},{’’GA02’’,69},{’’GA04’’,85},{.tGAOl”,91},{’’GA07’’,72},{’’GA08’’,64},{’’GA06”,87},{’’GAOl5’’,85},{’’GAOl3’’,91},{’’GA012’’,64),{”GAOl4”,91),{’’GA011’’,77},{’’GAOl7’’,64),{’’GA018’’,64},{’’GA016’’,72}};
13 STREC h[N];
14 int i,n;FTLE *out;
15 n=fun(s,h);
16 printf(’’The%d highest score:\n’’,n);
17 for(i=0;i<n; i++)
18 printf(’’%s %4d\n’’,h
.num,h
.s);
19 printf(’’\n’’);
20 out=fopen(’’out.clat’’,’’w’’);
21 fprintf(out,’’%d\n’’,n);
22 for(i=0;i<n;i++)
23 fprintf(out,’’%4d\n’’,h
.s);
24 fclose(out);
25 }
选项
答案
1 int i,max=a[0].s,n=0; 2 for(i=1;i<N; i++) 3 if(max<a[i].s)max=a[i].s;/*找出最高成绩*/ 4 for(i=0;i<N;i++) 5 if(max==a[i].s)b[n++]=a[i];/*找相等的最高成绩并存入数组b中*/ 6 return n; /*返回符合条件的人数*/
解析
程序功能是把分数最高的学生数据放在h所指的数组中。
(1)要把最高分数的学生数据放在数组中,首先求出最高分数,再使用一个for循环把所有的成绩进行比较,找出最高的分数来。
(2)找出所有与最高分数相等的学生,并将最高分数的人数累加。
转载请注明原文地址:https://kaotiyun.com/show/aAxp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。intword(char*s){intnum=0,flag=0;while(*s){if(【】==’’)flag=0;
有以下程序A:intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;)main(){int
以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}
以下叙述中错误的是______。
设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。
以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)if(a[i]<a[j])________return(p);}在下划线处应填入的是
下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。intword(char*s){intnum=0,flag=0;while(*s){if(【】==’’)flag=0;
两次运行下面的程序后,如果从键盘上分别输入7和3,则输出结果是______。main(){intx;scanf("%d",&x);if(++x>5)printf("%d",x);elsep
编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑
下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。intn=0,c;c=getchar();while(c!=’\n’){if(______)n++;}
随机试题
哌唑嗪除了用于高血压之外还可用于
()油井生产压差越大,单井产量越低,反之则上升。
男性,40岁,约20年前开始出现右下肢肿胀,逐渐加重,其间伴有多次“丹毒”发作,现右下肢明显增粗,行走费力。查体:右下肢明显增粗,皮肤粗糙、质韧,无可凹性水肿。放射性核素检查显示浅、深淋巴管均有回流不畅,在下肢远端淤滞。
男,45岁,较肥胖,因面部反复疖肿2月就诊,无明显"三多一少"症状,空腹血糖7.6mmol/L,父母均为2型糖尿病患者。
下列有关仲裁管辖的表述哪些是不正确的?()。
井下爆破作业()执行。
实行会员分级结算制度的期货交易所的结算会员为债务人时,债权人请求人民法院冻结、划拨非结算会员在结算会员保证金账户中的资金的,人民法院不予支持。()
连续竞价期间,上海证券交易所和深圳证券交易所的即时行情内容包括:实时最高( )买入申报价格和数量。
Whodoesthemanwanttospeakto?
【B1】【B5】
最新回复
(
0
)