C语言编程题,求大佬解答

2024-11-06 07:52:03
推荐回答(1个)
回答1:

#include

int main()

{ struct stu

  { int id;

    char name[11];

    int a,b,c;

  } t,st[5];

  int i,j;

  FILE *fp1,*fp2;

  if((fp1=fopen("d:\\stud.dat","r"))==NULL)

  { printf("f1 open error!\n");

    return 1;

  }

  if((fp2=fopen("d:\\studsort.dat","w"))==NULL)

  { printf("f2 open error!\n");

    return 2;

  }

  for(i=0; i<5; i++)

    fscanf(fp1,"%d%s%d%d%d",&st[i].id,st[i].name,&st[i].a,&st[i].b,&st[i].c);

  for(i=0; i<4; i++)

    for(j=0; j<4-i; j++)

      if(st[j].a+st[j].b+st[j].c

      { t=st[j];

        st[j]=st[j+1];

        st[j+1]=t;

      }

  for(i=0; i<5; i++)

  { printf("%d %10s %4d %4d %4d  %7.2f\n",st[i].id,st[i].name,st[i].a,st[i].b,

           st[i].c,(st[i].a+st[i].b+st[i].c)/3.0);

    fprintf(fp2,"%d %10s %4d %4d %4d  %7.2f\n",st[i].id,st[i].name,st[i].a,st[i].b,

            st[i].c,(st[i].a+st[i].b+st[i].c)/3.0);

  }

  fclose(fp1);

  fclose(fp2);

  return 0;

}