学生记录由学号和成绩组成, N 名学生的数据已放入主函数中的结构体数组中, 请编写函数fun, 其功能是: 把分数最低的学生数据放入 b 所指的数组中。 注意: 分数最低的学生可能不止一个, 函数返回分数最低的学生人数。
注意: 部分源程序在文件 PROG1.C 中。
请勿改动主函数 main 和其他函数中的任何内容, 仅在函数 fun 的花括号中填入你编写的若干语句。
#include <stdio.h>
#deftne N 16
typedef struct
{char num[10];
int s;
}STREC;
mt fun( STREC * a, STREC * b )
{
}
main( )
{ STREC s[N] = {{"GA05" ,85 }, {"GA03" ,76}, {"GA02",69}, {"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
{"GA015",85}, {"GA013",91},{"GA012",64}, {" GA014",91/,
{"GA011",91}, {"GA017",64},{"GA018",64},{"GA016",72t}};
STREC h[N];
int i,n; FILE * out;
n=fun(s,h);
printf("The % d lowest score :\n",n);
for(i=0;i<n; i+ +)
printf("% s %4d\n", h[i]. num,h[i].s);
printf(" \n");
out=fopen("out.dat","w");
fprintf(out,"% d\n",n);
for(i=0;i<n;i+ +)
fprintf(out,"%4d\n",h[i].s);
fclose (out);
}
int fun(STREC*a,STREC*b)
{
int i,j=0,min=a[0].s;
for (i=0;i<N;i++)
if (min>a[i].s)
min=a[i]s;/*找出最小值*/
for(i=0;i<N;i++)
if(main==a[i].s)
b[j++]=a[i];/*找出成绩与 min 相等的学
生的记录, 存入结构体 b
中*/
returnj;
}
本题考查: 查找结构体数组中的最小数据, 需要通过 for 循环语句和 if 条件语句来完成。
本题中第一个循环语句的作用是遍历数组求出最低分数; 第二个循环语句的作用是将数组中的元素与最低分比较, 查找是否存在与最低分相等的成绩。