#include<stdio.h> #include<stdlib.h>
struct student { char name[10]; int num; float score_1; float score_2; float score_3; float aver; }stu[6],temp;
void save() {FILE*fp; int i; if((fp=fopen ("stu.dat","wb"))==NULL) { printf("cannot open file1\n"); return; } for(i=0;i<5;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); }
void save_1() {FILE*fp; int i; if((fp=fopen ("stu_sort.dat","wb"))==NULL) { printf("cannot open file4\n"); return; } for(i=0;i<5;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); }
void save_2() {FILE*fp; int i; if((fp=fopen ("aver.dat","wb"))==NULL) { printf("cannot open file7\n"); return; } for(i=0;i<5;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); }
void print() {int i; FILE*fp; if((fp=fopen("stu.dat","rb"))==NULL) { printf("cannot open file2\n"); exit(0); } for(i=0;i<5;i++) { fread(&stu[i],sizeof(struct student),1,fp); printf("%s\t%d\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",stu[i].name,stu[i].num,stu[i].score_1,stu[i].score_2,stu[i].score_3,stu[i].aver); } fclose(fp); }
void print_1() {int i; FILE*fp; if((fp=fopen("stu_sort.dat","rb"))==NULL) { printf("cannot open file5\n"); exit(0); } printf("the aver is\n"); for(i=0;i<5;i++) { fread(&stu[i],sizeof(struct student),1,fp); printf("%s\t%d\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",stu[i].name,stu[i].num,stu[i].score_1,stu[i].score_2,stu[i].score_3,stu[i].aver); } fclose(fp); }
void print_2() {int i; FILE*fp; if((fp=fopen("aver.dat","rb"))==NULL) { printf("cannot open file8\n"); exit(0); } for(i=0;i<5;i++) { fread(&stu[i],sizeof(struct student),1,fp); printf("%s\t%d\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",stu[i].name,stu[i].num,stu[i].score_1,stu[i].score_2,stu[i].score_3,stu[i].aver); } fclose(fp); }
void aver() {int i,j,k,l,m; FILE*fp; if((fp=fopen("stu.dat","rb"))==NULL) { printf("cannot open file3\n"); exit(0); } for(i=0;i<5;i++) fread(&stu[i],sizeof(struct student),1,fp); fclose(fp); for(j=0;j<4;j++) { k=j; for(l=j+1;l<5;l++) if(stu[k].aver>stu[l].aver)k=l; if(k!=j) { temp=stu[j]; stu[j]=stu[k]; stu[k]=temp; } } }
void insert() { int i,j,k; FILE*fp; if((fp=fopen("stu_sort.dat","rb"))==NULL) { printf("cannot open file6\n"); exit(0); } for(i=0;i<5;i++) fread(&stu[i],sizeof(struct student),1,fp); fclose(fp); printf("please insert data of students num,score_1,score_2,score_3,name\n"); scanf("%d,%f,%f,%f,%s",&stu[5].num,&stu[5].score_1,&stu[5].score_2,&stu[5].score_3,stu[5].name); stu[5].aver=(stu[5].score_1+stu[5].score_2+stu[5].score_3)/3; for(j=0;j<5;j++) { if(stu[5].aver<stu[j].aver);break; } temp=stu[5]; for(k=5;k>(j+1);k--) { stu[k]=stu[k-1]; } stu[j+1]=temp; } void main() { int i; printf("please enter data of students num,score_1,score_2,score_3,name\n"); for(i=0;i<5;i++) { scanf("%d,%f,%f,%f,%s",&stu[i].num,&stu[i].score_1,&stu[i].score_2,&stu[i].score_3,stu[i].name); stu[i].aver=(stu[i].score_1+stu[i].score_2+stu[i].score_3)/3; } save(); print(); aver(); save_1(); print_1(); insert(); save_2(); print_2(); }