#include "stdio.h"
#include "process.h"
struct stu
{ int num;
char name[20];
float score;
}sa[3],sb[3],*pa,*pb;
int main()
{
FILE *fp;
int i;
pa = sa;
pb = sb;
if((fp = fopen("f:\\data2.dat", "wb+")) == NULL)
{
printf("不能打开文件!");
exit(1);
}
printf("\n请输入学号 姓名 成绩:\n");
for(i = 0; i < 4; i++,pa++) //循环3次,每次输入一个学生数据
scanf("%d %s %f", &pa->num, pa->name, &pa->score);
pa = sa;
for(i = 0; i < 4; i++, pa++) //循环3次,每次向文件写入一个学生数据
fprintf(fp,"%d %s %f \n", pa->num, pa->name, pa->score);
rewind(fp); //把文件内部的位置指针移到文件的开头
for(i = 0; i < 4; i++, pb++) //循环3次,每次从文件中读入一个学生数据
fscanf(fp,"%d %s %f", &pb->num, pb->name, &pb->score);
printf("\n\n 学号\t姓名 成绩\n");
pb = sb;
float a;
for(i = 0; i < 3; i++)
for(pb = sb+i; pb < sb+4; pb++)
{
if((sb + i)->score > pb->score)
{
a = (sb+i)->score;
(sb+i)->score = pb->score;
pb->score = a;
}
}
pb = sb;
for(i=0;i<4;i++,pb++) /*循环3次,每次显示一个学生数据*/
printf("%5d\t%s %f\n", pb->num , pb->name,pb->score);
fclose(fp);
return 0;
}