用c语言编写函数,按照成绩对五个学生进行排序包括学号,姓名,成绩
时间: 2023-05-22 13:03:21 浏览: 137
这是一个经典的排序算法题,可以使用冒泡排序、快速排序等算法来解决。以下是一种简单的冒泡排序的实现代码示例:
```
#include <stdio.h>
#include <string.h>
typedef struct {
int id;
char name[20];
int score;
} Student;
void bubble_sort(Student s[], int n) {
int i, j;
Student temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (s[j].score < s[j+1].score) {
// 交换
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
int main() {
Student students[5] = {
{1, "Tom", 80},
{2, "Jerry", 90},
{3, "Mike", 70},
{4, "Bob", 85},
{5, "Lucy", 95},
};
int i;
// 排序前
printf("排序前:\n");
for (i = 0; i < 5; i++) {
printf("%d %s %d\n", students[i].id, students[i].name, students[i].score);
}
// 排序
bubble_sort(students, 5);
// 排序后
printf("排序后:\n");
for (i = 0; i < 5; i++) {
printf("%d %s %d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
这里定义了一个结构体类型,包含学号、姓名、成绩三个字段。使用冒泡排序算法对该结构体数组进行排序,先按照成绩从高到低排序,相同成绩再按照学号从小到大排序。最后输出排序结果。
阅读全文