第三题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#define N 16
typedef struct
{
char num[10];
int s;
} STREC;
void fun ( STREC a[ ] )
{
}
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++)
{
www.Examzz.com 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 );
}
参考答案第三题: void fun ( STREC a[ ] )
{ int i,j;
STREC t;
for(i=0; i<N-1; i++)
for(j=i; j<N; j++)
if(a[i].s<a[j].s)
{ t=a[i];
a[i]=a[j];
a[j]=t;
}
}