有五个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件stud中。
#include <stdio.h>
#include <string.h>
#define N 5
struct Student{
int num;
char name[20];
float score[3];
float aver;
}stud[N],stud_1[N];
int main()
{
FILE *fp;
int i,j;
float sum;
if((fp=fopen("stud.txt","wb"))==NULL)
{printf("cannot open stud!\n");
exit(0);
}
for(i=0;i<N;i++)
{printf("请输入第%d个学生信息(学号、姓名、3门成绩):\n",i+1);
scanf("%d %s %f %f %f",&stud[i].num,stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
}
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<3;j++)
sum=sum+stud[i].score[j];
stud[i].aver=sum/3;
}
for(i=0;i<N;i++)
if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
printf("stud write error!\n");
fclose(fp);
fp=fopen("stud.txt","rb");
if(fp==NULL)
{printf("cannot open stud!\n");
exit(0);
}
printf("从stud.txt文件中读取到的信息如下:\n");
printf("\t 学号\t姓名\t3门成绩\t\t\t平均成绩\n");
for(i=0;i<N;i++)
{printf("第%d个学生:",i+1);
fread(&stud_1[i],sizeof(struct Student),1,fp);
printf("%d\t%s\t%.2f %.2f %.2f\t%.2f\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].aver);
}
return 0;
}