按总分从高到低排序保存到cj.dat,用c语音
时间: 2024-02-25 13:56:49 浏览: 93
好的,以下是一个示例C语言程序,可实现按照总分从高到低排序并保存到文件:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100 // 最大学生数
#define MAX_NAME_LEN 20 // 学生姓名最大长度
// 学生结构体
typedef struct {
char name[MAX_NAME_LEN]; // 姓名
int math; // 数学成绩
int english; // 英语成绩
int total; // 总分
} student_t;
// 比较函数:按总分从高到低排序
int cmp(const void* a, const void* b) {
return ((student_t*)b)->total - ((student_t*)a)->total;
}
int main() {
student_t students[MAX_STUDENTS]; // 学生数组
int n; // 学生数
FILE* fp; // 文件指针
// 读入学生数和成绩
printf("请输入学生数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、数学成绩和英语成绩:", i + 1);
scanf("%s %d %d", students[i].name, &students[i].math, &students[i].english);
students[i].total = students[i].math + students[i].english;
}
// 按总分排序
qsort(students, n, sizeof(student_t), cmp);
// 保存到文件
fp = fopen("cj.dat", "w");
if (fp == NULL) {
printf("无法打开文件!\n");
return 1;
}
for (int i = 0; i < n; i++) {
fprintf(fp, "%s %d %d %d\n", students[i].name, students[i].math, students[i].english, students[i].total);
}
fclose(fp);
printf("排序结果已保存到cj.dat文件!\n");
return 0;
}
```
注意:此程序只是一个示例,实际使用时需要根据具体情况进行修改。同时,本程序未考虑输入数据的合法性和错误处理,仅供参考。
阅读全文