//题目要求输入学生信息按总分数排序,存入文件中,再读取输出信息#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
提交
取消