第1个回答 2013-12-04
#define N 5
#include<stdio.h>
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}stu[N],temp;
int paixu(struct student stu[N],struct student temp){
int i,j;
FILE *fp;
clrscr();
if((fp=fopen("stud.txt","rb"))==NULL)
{
printf("Cannot open the file!");
exit(0);
}
printf("\nFile 'stud.txt':");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("\n%8s%8s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%8d",stu[i].score[j]);
printf("%10.2f",stu[i].ave);
}
fclose(fp);
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(stu[i].ave<stu[i+1].ave)
{
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
} printf("\nAfter sorted:\n");
fp=fopen("stu_sort.txt","wb");
for(i=0;i<N;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("stud_sort.txt","rb");
for(i=0;i<N;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("\n%8s%8s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%8d",stu[i].score[j]);
printf("%10.2f",stu[i].ave);
}
fclose(fp);
}void main()
{
int i,j,sum,k;
FILE *fp;
clrscr();
for(i=0;i<N;i++)
{
printf("\nInput score of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3.0;
}
fp=fopen("stud.txt","wb");
for(i=0;i<N;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("stud.txt","rb");
for(i=0;i<N;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("\n%8s%8s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%8d",stu[i].score[j]);
printf("%10.2f",stu[i].ave);
}fclose(fp);
paixu(stu,temp);
}希望符合要求。∩_∩本回答被网友采纳