已知file1.dat中存储了5名学生信息,从file1.dat中读出学生信息,将学生信息按分数降序排序后写入file2.dat. 学生信息定义如下: struct stu{ int sno; char[20] sname; double score; } 【输入形式】 无 【输出形式】 文件file2.datc语言
时间: 2024-02-23 13:00:46 浏览: 126
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息 学生信息包括学号、姓名、成绩
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 20
#define NUM_STU 5
struct stu {
int sno;
char sname[MAX_LEN + 1];
double score;
};
int cmp(const void *a, const void *b) {
struct stu *s1 = (struct stu *)a;
struct stu *s2 = (struct stu *)b;
if (s1->score < s2->score) {
return 1;
} else if (s1->score > s2->score) {
return -1;
} else {
return 0;
}
}
int main() {
FILE *fp1, *fp2;
struct stu students[NUM_STU];
int i;
// 从 file1.dat 中读取学生信息
fp1 = fopen("file1.dat", "rb");
fread(&students, sizeof(struct stu), NUM_STU, fp1);
fclose(fp1);
// 按分数降序排序
qsort(students, NUM_STU, sizeof(struct stu), cmp);
// 将排序后的学生信息写入 file2.dat
fp2 = fopen("file2.dat", "wb");
fwrite(&students, sizeof(struct stu), NUM_STU, fp2);
fclose(fp2);
return 0;
}
```
注:文件的读写方式为二进制模式。如果文件不存在会自动创建。
阅读全文