用C语言写一个总成绩排序
时间: 2023-07-01 21:05:46 浏览: 48
好的,以下是一个用C语言实现的按照总成绩从高到低排序的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
char name[20];
int score1, score2, score3;
int total;
};
int cmp(const void* a, const void* b) {
return (*(struct Student*)b).total - (*(struct Student*)a).total;
}
int main() {
int n, i;
printf("请输入学生人数: ");
scanf("%d", &n);
struct Student* students = (struct Student*)malloc(sizeof(struct Student) * n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息(姓名 成绩1 成绩2 成绩3): ", i + 1);
scanf("%s %d %d %d", students[i].name, &students[i].score1, &students[i].score2, &students[i].score3);
students[i].total = students[i].score1 + students[i].score2 + students[i].score3;
}
qsort(students, n, sizeof(struct Student), cmp);
printf("按照总成绩从高到低排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%s %d %d %d 总成绩:%d\n", students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].total);
}
free(students);
return 0;
}
```
程序中使用了结构体来存储每个学生的姓名和成绩,并计算出总成绩。使用qsort函数来进行排序,并按照指定格式输出排序后的结果。