//題目要求輸入學生信息按總分數排序,存入文件中,再讀取輸出信息#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);}
添加回答
舉報
0/150
提交
取消