//2019-10-30
#include <iostream>
#include <algorithm>
using namespace std;
struct student{
int id;//学号
char name[10];//姓名
int sx;//数学
int yw;//语文
int yy;//英语
int sum;//总成绩
}stu[10];
int main()
{
bool cmp(struct student stu1,struct student stu2);
int n,i;
int row=0;
int k=-1;//表示当前位置的学生前一个学生的成绩
FILE *fp = fopen("e:\\data\\stu.dat","w");
printf("输入学生人数:\n");
scanf("%d\n",&n);
for(i=0;i<n;i++){
scanf("%d %s %d %d %d",&stu[i].id,&stu[i].name,&stu[i].sx,&stu[i].yw,&stu[i].yy);
stu[i].sum=stu[i].sx+stu[i].yw+stu[i].yy;
}
sort(stu,stu+n,cmp);//sort排序只能用bool类型
printf("按照成绩从高到低输出\n");
for(i=0;i<n;i++){
printf("学号%10d,姓名%10s,数学%10d,语文%10d,英语%10d,总分%10d\n",stu[i].id,stu[i].name,stu[i].sx,stu[i].yw,stu[i].yy,stu[i].sum);
}
printf("以下几位同学的成绩在前四:\n");
for(i=0;i<n;i++){
if(stu[i].sum>=stu[3].sum){
if(stu[i].sum!=k){
row=i+1;
}
k=stu[i].sum;
printf("名次%10d 姓名%10s 分数%10d\n",row,stu[i].name,stu[i].sum);
fprintf(fp,"名次%10d 姓名%10s 分数%10d\n",row,stu[i].name,stu[i].sum);
}
}
return 0;
}
bool cmp(struct student stu1,struct student stu2)
{
if(stu1.sum>stu2.sum)
return true;
else
return false;
}