#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char bz;
char time[3];
int jls;
short zcd;
short jlcd;
char empty[20];
}HEAD;
typedef struct
{
char ename[10];
char k;
char elx;
int ewz;
char ecd;
char ews;
char ek[14];
}E;
typedef struct
{
char fname[15];
float math;
float english;
float computer;
float zf;
}F;
int main()
{
FILE *p;
int i,j,n,n1,n2=0;
char flag,name[15]="0",fen[10]="0";
HEAD h;
E e[5];
F f[10],t;
long x;
scanf("%d",&n);
if(n==1)
{
if((p=fopen("aaa.dic","rb"))==NULL)
exit(1);
}
if(n==2)
{
if((p=fopen("bbb.dic","rb"))==NULL)
exit(1);
}
if(n==3)
{
if((p=fopen("ccc.dic","rb"))==NULL)
exit(1);
}
fread(&h,32,1,p);
n1=(h.zcd-33)/32;
for(i=0;i<n1;i++)
{
fread(e,32,1,p);
if(strcmp(e[0].ename ,"name")==0);
{
e[1]=e[0];
}
if(strcmp(e[0].ename ,"math")==0)
{
e[2]=e[0];
}
if(strcmp(e[0].ename ,"english")==0)
{
e[3]=e[0];
}
if(strcmp(e[0].ename ,"computer")==0)
{
e[4]=e[0];
}
}
fseek(p,h.zcd,0);
for(i=0;i<h.jls;i++)
{
fread(flag,1,1,p);
fseek(p,-1,1);
if(flag=='*')
{
fseek(p,h.jlcd,1);
continue;
}
else
{
fseek(p,e[1].ews,1);
fread(name,e[1].ecd,1,p);
name[e[1].ecd]=0;
for(j=e[1].ecd;j>-1;j--)
{
if(name[j]==' '||name[j]==0)
name[j]=0;
else
break;
}
strcpy(f[n2].fname,name);
fseek(p,-(e[1].ews+e[1].ecd),1);
fseek(p,e[2].ews,1);
fread(fen,e[2].ecd,1,p);
f[n2].math=(float)atof(fen);
fseek(p,-(e[2].ews+e[2].ecd),1);
fseek(p,e[3].ews,1);
fread(fen,e[3].ecd,1,p);
f[n2].english=(float)atof(fen);
fseek(p,-(e[3].ews+e[3].ecd),1);
fseek(p,e[4].ews,1);
fread(fen,e[4].ecd,1,p);
f[n2].computer=(float)atof(fen);
fseek(p,-(e[4].ews+e[4].ecd),1);
f[n2].zf=f[n2].math+f[n2].english+f[n2].computer;
fseek(p,h.jlcd,1);
n2++;
}
}
for(j=0;j<n2;j++)
{
for(i=0;i<n2;i++)
{
if(f[i].zf<f[i+1].zf)
{
t=f[i];
f[i]=f[i+1];
f[i+1]=t;
}
if(f[i].zf==f[i+1].zf)
{
if(f[i].english<f[i+1].english)
{
t=f[i];
f[i]=f[i+1];
f[i+1]=t;
}
}
}
}
for(i=0;i<n2;i++)
printf("%s %.2f %.2f %.2f %.2f\n",f[i].fname,f[i].math,f[i].english,f[i].computer,f[i].zf);
fclose(p);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:我可以回答这个问题,但是目前还没有看到具体的问题。请提供详细的问题描述,我将尽力提供解决方案。