//题目要求输入学生信息按总分数排序,存入文件中,再读取输出信息
#include <stdio.h>
#include<stdlib.h>
typedef struct
{
int num ;
char name[10];
int score[15];
int sum;
}STU;
void summ(STU st[],int n)
{ int i,j;
for(i=0;i<n;i++)
{ int sum=0;
for(j=0;j<3;j++)
sum+=st[i].score[j];
st[i].sum=sum;
}
}
void stor(STU st[],int n)
{
int i,j,k;
STU t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{ if(st[k].sum<st[j].sum)
k=j;
}
if(k!=i)
{ t=st[k]; st[k]=st[i]; st[i]=t; }
}
}
int main()
{ FILE *fp;
int i,j,n;
STU st[15];
scanf("%d",&n);
printf("输入学生信息:\n");
fp=fopen("class_list.txt","at");
if(fp==NULL)
{
printf("不能打开此文件\n");
getchar();
exit(1);
}
for(i=0;i<n;i++)
{
scanf("%d %s",&st[i].num,st[i].name);
for(j=0;j<3;j++)
scanf("%d",&st[i].score[j]);
summ(st,n);
stor(st,n);
fwrite(&st[i],sizeof(STU),1,fp);
}
fclose(fp);
fp=fopen("class_list.txt","rt");
printf("该班成绩顺序为:\n");
i=0;
while(fread(&st[i],sizeof(STU),1,fp)!=NULL)
{
printf("%d %s %d\n",st[i].num,st[i].name,st[i].sum);
i++;
}
fclose(fp);
}
Sweetink