用C语言实现快速排序算法,同时按名次列出每个学生的姓名与分数的代码
时间: 2024-03-01 20:54:52 浏览: 73
以下是用C语言实现快速排序算法,并按名次列出每个学生的姓名与分数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
int score;
} Student;
void quick_sort(Student *students, int left, int right) {
if (left >= right) return;
int i = left, j = right;
Student pivot = students[left];
while (i < j) {
while (i < j && strcmp(students[j].name, pivot.name) >= 0) j--;
students[i] = students[j];
while (i < j && strcmp(students[i].name, pivot.name) <= 0) i++;
students[j] = students[i];
}
students[i] = pivot;
quick_sort(students, left, i - 1);
quick_sort(students, i + 1, right);
}
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
Student *students = (Student *)malloc(n * sizeof(Student));
printf("请输入每个学生的姓名和分数:\n");
for (int i = 0; i < n; i++) {
scanf("%s%d", students[i].name, &students[i].score);
}
quick_sort(students, 0, n - 1);
printf("按名次列出每个学生的姓名和分数:\n");
for (int i = 0; i < n; i++) {
printf("%d. %s %d\n", i + 1, students[i].name, students[i].score);
}
free(students);
return 0;
}
```
代码中用结构体 `Student` 来存储每个学生的姓名和分数,使用 `strcmp` 函数来比较两个字符串的大小关系。在 `main` 函数中,先输入学生人数和每个学生的姓名和分数,然后调用 `quick_sort` 函数进行排序,最后按名次列出每个学生的姓名和分数。
阅读全文