第十章:10.5有五个学生,每个学生有三门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均数存放在磁盘文件stud中。
10.6将第五题stud文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新的文件stu_sort中。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct S
{
int xh;
char name[20];
float score[3];
float pjz;
};
int main()
{
struct S s[5] = { 0 };
int i = 0;
int j = 0;
int sum = 0;
for (i = 0; i < 5; i++)
{
sum = 0;
printf("请输入学生的学号、姓名:\n");
scanf("%d %s",&s[i].xh, s[i].name);
for (j = 0; j < 3; j++)
{
printf("请输入学生的成绩:\n");
scanf("%f",&s[i].score[j]);
sum += s[i].score[j];
}
s[i].pjz = sum / 3.0;
}
for (i = 0; i < 5; i++)
{
struct S tmp = {0};
for (j = i; j < 5; j++)
{
if (s[i].pjz < s[j].pjz)
{
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
}
FILE* pf = fopen("stud.txt", "w");//存放数据,用w
for (i = 0; i < 5; i++)
{
fprintf(pf, "%d %s \n", s[i].xh, s[i].name);
for (j = 0; j < 3; j++)
{
fprintf(pf, " %.2f \n", s[i].score[j]);//写入数据
}
fprintf(pf, " %.2f\n", s[i].pjz);
}
fclose(pf);//关闭文件
pf = NULL;
return 0;
}
输出结果: