结构体数组排序
学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是: 按分数降序排列学生的记录,高分在前,低分在后*/ #include<stdio.h> #define N 16 typedef struct { char num[10]; int s; } STREC; void fun(STREC a[]) { int i,j; STREC p; for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) //选择排序 { if(a[i].s<a[j].s) { p=a[i]; a[i]=a[j]; a[j]=p; } } } 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;FILE *out ; 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"); out = fopen("out.dat","w") ; 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) ; }