问答题 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 注意:部分源程序存在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #include<string.h>3 #define N 104 typedef struct ss5 { char num[10];int s;} STU;6 fun(STU a[],STU *s)7 {89 }10 main()11 { STU a[N]=({''A01'',81},{''A02'',89},{''A03'',66},{''A04'',87},(''A05'',77},{''A06'',90},{''A07'',79},{''A08'',61},{''A09'',80},{''A10'',71}},m;12 int i;13 printf(''*****The original data *****\n'');14 for(i=0;i<N;i++)printf(''No=%s Mark=%d\n'', a[i].num,a[i].s);15 fun(a,&m);16 printf (''***** THE RESULT *****\n'');17 printf(''The top:%s,%d\n'', m.num,m.s);18 NONO();19 }20 NONO()21 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */22 FILE *rf,*wf;23 STU a [N],m;24 int i;25 rf=fopen(''in.dat'',''r'');26 wf=fopen(''out.dat'',''w'');27 for(i=0 ; i<10; i++) fscanf(rf,''%s%d'',a[i].num,&a[i].s);28 fun(a,&m);29 fprintf(wf,''The top:%s,%d\n'',m.num,m.s);30 fclose(rf);31 fclose(wf);32 }
【正确答案】正确答案:1 int i,max=a[0].s,j=0; 2 for(i=1;i<N; i++) 3 if(max<a[i].s){ 4 j=i; 5 max=a[i].s; } 6 *s=a[j];
【答案解析】解析:该程序功能是求最高分数的学生。本题是关于求解结构体中某些成员的最大值,首先将第一个值设定为最大值,并在循环中将其他所有值与该值进行比较,求得最大值。然后将最大值与所有值进行比较,求得所有的最大值。