萌新新学文件,求教大神:编一个程序,实现以下内容
一条学生记录包括学号、姓名和成绩等信息,按照以下要求编写程序。1、格式化输入多个学生记录。
2、利用fwrite将学生信息按二进制方式写到文件student.dat中。
3、利用fread从文件中读出所有学生成绩并求最大值和平均值。
4、将文件中的成绩排序,并将排序好的成绩单写入文本文件score.txt中。
下面是我自己编的,一直运行不了是为什么?
#include<stdio.h>
#include<stdlib.h>
#define N 3
int main()
{struct student
{int num;
char name[20];
float score;
};
FILE *fp;
struct student stu[N];
int i,j;
float t,s,ave,n;
if((fp=fopen("file_student.dat","wb"))==NULL)
{printf("can not open the file\n");
exit(0);
}
printf("num\tname\tscore\t\n");
for(i=0;i<N;i++)
{scanf("%d\t%s\t%f",stu[i].num,&stu[i].name,&stu[i].score);
fwrite(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
if((fp=fopen("file_A1.txt","rb"))==NULL)
{printf("can not open the file\n");
exit(0);
}
printf("the score info:\n");
for(i=0;i<N;i++)
fread(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<N;i++)
printf("num\t%d\tname\t%s\tscore\t%f\n",stu[i].num,stu[i].name,stu[i].score);
for(i=0;i<N;i++)
{if(stu[i].score>stu[i+1].score)
t=stu[i].score;
else
t=stu[i+1].score;
}
for(i=0;i<N;i++)
s+=stu[i].score;
ave=s/N;
printf("max=%f,ave=%f",t,ave);
fclose(fp);
if((fp=fopen("file_score.txt","w"))==NULL)
{printf("can not open the file\n");
exit(0);
}
printf("num\tname\tscore\t\n");
for(i=0;i<N;i++)
{scanf("%d\t%s\t%f",stu[i].num,&stu[i].name,&stu[i].score);
}
for(i=1;i<N;i++)
for(j=0;j<N-i;j++)
if(stu[j].score<stu[j+1].score)
{n=stu[j].score;
stu[j].score=stu[j+1].score;
stu[j+1].score=n;
}
for(i=0;i<N;i++)
printf("%d\t%s\t%f",stu[i].num,stu[i].name,stu[i].score);
printf("\n");
fclose(fp);
return 0;
}