从键盘输入n(n<=50)名学生的信息(定义为结构体),包括姓名、数学、英语、物理三门课程成绩,并按照总分由高到低进行排序,将排好序的学生数据存放到文件“sort.txt”文件中。
【输入说明】
输入第一行是一个数字,表示学生数n。接下来有n行数据,每一行表示一个学生的数据。
【输入样例】
3
张三 80 90 95
李四 76 89.5 89
王五 100 66.5 98.5
【输出样例】
张三:80.0 90.0 95.0
王五:100.0 66.5 98.5
李四:76.0 89.5 89.0
#include <stdio.h>
#include <string.h>
typedef struct student
{
char name[20];
float score[3];
}Stu;
//此函数定义用来测试,不能删除,自己提交的代码也要包含此内容
void AfterTest()
{
FILE *fp;
fp=fopen("sort.txt","r");
Stu s;
while(fread(&s,sizeof(Stu),1,fp)!=0)
{
printf("%s:%.1f %.1f %.1f\n",s.name,s.score[0],s.score[1],s.score[2]);
}
fclose(fp);
}
int main()
{
int i,n;
scanf ("%d",&n);
Stu s[100];
for (i=0;i<n;i++)
scanf ("%s%f%f%f",s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]);
FILE *fp=fopen("sort.txt","w");
for (i=0;i<n;i++)
fwrite (&s[i],sizeof(Stu),1,fp);
fclose (fp);
//在这之上编写代码
AfterTest();//用户测试,不能删除
return 0;
}
当我输出数据的时候,顺序不会发生改变,我想比较的话比较代码应该插在哪里?可以给一个例子吗?
– wedy1234 3年前