/*-------------------------------------------------------【程序设计】---------------------------------------------------------题目:学生的记录由学号和成绩组成。N名学生的数据已放入主函数中的结构体数组s中,      请编写函数fun,其功能是:把高于等于平均分的学生数据放在b所指的数组中,      高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入      你编写的若干语句。-------------------------------------------------------*/#include <stdio.h>#define   N   12void wwjt ( );typedef  struct{          char  num[10];        int  s;} STREC;double  fun( STREC  *a, STREC *b, int *n ){        /**********Program**********/    int i;    double av = 0.0;    *n=0;    for(i=0;i<N;i++)        av = av+a[i].s;    av = av/N;    for(i=0;i<N;i++)        if(av<=a[i].s){            b[*n]=a[i];            *n=*n+1;        }    return av;        /**********  End  **********/}void main(){         STREC  s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},                {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},                {"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}};        STREC  h[N];        int i, n;          double  ave;        ave=fun( s,h,&n );        printf("The %d student data which is higher than %7.3f:\n",n,ave);        for(i=0;i<n; i++)                printf("%s  %d\n",h[i].num,h[i].s);        printf("\n");        wwjt ( );}void wwjt( ){        FILE *in, *out ;        STREC  h[N];        int  i,j, n;         double  ave;        STREC  s[N];        in=fopen("in.dat","r");        if(in==NULL)        {                printf("Please Verify The Currernt Dir..It May Be Changed");        }        out=fopen("out.dat","w");        if(out==NULL)        {                printf("Please Verify The Current Dir.. It May Be Changed");        }        for(j=0;j<10;j++)        {                for(i=0; i<N; i++)                {                        fscanf(in,"%s %d", &s[i].num, &s[i].s);                }                ave=fun( s,h,&n );                fprintf(out, "%d\n%7.3f\n", n, ave);        }        fclose(in);        fclose(out);}