/*-------------------------------------------------------【程序设计】---------------------------------------------------------题目:学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中, 请编写函数fun,其功能是:按分数降序排列学生的记录,高分在前,低分在后。注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。-------------------------------------------------------*/#include <stdio.h>#define N 16void wwjt ( );typedef struct{ char num[10]; int s;} STREC;void fun( STREC a[] ){ /**********Program**********/ int i,j; STREC t; for(i=1;i<N;i++) for(j=0;j<N-1;j++) if(a[j].s<a[j+1].s){ t = a[j]; a[j]=a[j+1]; a[j+1]=t; } /********** End **********/}void main(){ STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85}, {"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87}, {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91}, {"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}}; int i; fun( s ); printf("The data after sorted :\n"); for(i=0;i<N; i++) { if( (i)%4==0 )printf("\n"); printf("%s %4d ",s[i].num,s[i].s); } printf("\n"); wwjt( );}void wwjt( ){ FILE *in, *out ; STREC s[N]; int i,j; 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<N; j++) { fscanf(in,"%s %d",&s[j].num,&s[j].s); } fun(s); for(i=0;i<N; i++) { if( (i)%4==0 && i) fprintf(out, "\n"); fprintf(out, "%4d ",s[i].s); } fprintf(out,"\n"); fclose(out) ;}