学生成绩排序
请修改编辑器中的代码,完成以下功能:把学生记录按成绩从高到低排序。 初始代码中已经写好了双重循环的框架,你需要补上比较与交换的那两行:当后面的成绩比前面的高时,交换这两条记录。程序不需要输入。 输出示例: The data after sorted : GA001 91 GA013 91 GA014 91 GA006 87 GA015 85 GA005 85 GA004 85 GA003 76 GA007 72 GA016 72 GA002 69 GA011 66 GA012 64 GA017 64 GA018 64 GA008 64 请沿用给定双重循环完成比较与整条记录交换;同分次序按该实现的示例。主函数另将降序成绩每行四个写入out.txt。
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
void fun( STREC a[] )
{
STREC tmp;
int i,j;
for(i = 0; i < N; i++)
for(j = i+1; j < N; j++)
{ /* 请按题目要求完成以下代码 */
}
}
int main(void)
{ 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.txt","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) ;
}
控制台
调试终端
