设名为“d:\S_total.dat”的二进制文件中按照下列结构型,依次存放了100个学生的信息。编一个程序,从中找出总分最高和总分最低的学生,并且输出它们的学号、姓名和总分。
struct{longnum;charname[20];floattotal;};
设名为“d:\S_total.dat”的二进制文件中按照下列结构型,依次存放了100个学生的信息。编一个程序,从中找出总分最高和总分最低的学生,并且输出它们的学号、姓名和总分。
struct{longnum;charname[20];floattotal;};
#include struct student {long num; char name[20]; float total; }st[2],stud; void main() {FILE*fp; int i,max,min; if((fp=fopen("d.\s_total.dat",t.rb"))==NULL)/*打开文件*/ {pfintf("Can not open file!\n");exit(0);} fread(&st[0],sizeof(struct student),1,fp);/*读出第一个学生的信息作为初值进行赋值*/ fread(&st[1],sizeof(struct student),1,fp); for(i=0;i<100;i++) { fseek(fp,sizeof(struct student)*i,0);/*文件中数据逐一进行定位查找后进行判断*/ fread(&stud,sizeof(struct student),1,fp); if(stud.totalst[i].total){st[1].total=stud.total;max=i;} } fseek(fp,sizeof(stmct student)*min,0); fread(&st[0],sizeof(struct student),1,fp);/*按记录的位置进行数据读取*/ fseek(fp,sizeof(stmct student)*max,0); fread(&st[1],sizeof(struct student),1,fp); printf("最好成绩学生姓名:%s,学号:%ld,成绩:%f\n”,st[1].name,st[1].Bum,st[1].total); printf("最差成绩学生姓名:%s,学号:%ld,成绩:%f\n",st[0].name,st[0].Bum,st[0].total); fclose(fp);/*关闭文件*/ }