请注意倒数几行代码,即:
...
avr_ENG=sum_ENG/30.0;
printf("avr_ENG=%5.1f",stu[i].avr_ENG);
/*把printf("avr_ENG=%5.1f",stu[i].avr_ENG); 换成printf("avr_ENG=%5.1f",avr_ENG);
或者,
还有一个下策,也能输出正确的结果,把avr_ENG=sum_ENG/30.0;改成stu[i].avr_ENG=sum_ENG/30.0;改成*/
avr_CHN=sum_CHN/30.0;
printf("avr_CHN=%5.1f",stu[i].avr_CHN);
avr_math=sum_math/30.0;
printf("avr_math=%5.1f",stu[i].avr_math);
fp=fopen("d:\\阿挺的东西\\stud","w");
for(i=1;i<=30;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
你在声明struct student类型时,有些失误.英语等平均成绩是30个学生共享的,而你把它放在一个学生的记录中!这样很浪费空间
把它们删掉.
struct student
{ char num[10];
char name[8];
int score_ENG,score_CHN,score_math;
double avr;
}stu[30];