1193: 单科成绩排序(结构体专题)
时间: 2023-04-25 10:04:28 浏览: 102
1193题是一道关于单科成绩排序的题目,需要使用结构体来实现。具体来说,题目要求输入n个学生的姓名和成绩,然后按照成绩从高到低排序,并输出排序后的学生姓名和成绩。
为了实现这个功能,我们可以定义一个结构体来表示每个学生的姓名和成绩,然后使用快速排序算法对结构体数组进行排序。具体实现过程如下:
1. 定义结构体类型
struct Student {
char name[20];
int score;
};
2. 输入学生信息
int n;
scanf("%d", &n);
Student students[n];
for (int i = ; i < n; i++) {
scanf("%s%d", students[i].name, &students[i].score);
}
3. 定义快速排序函数
void quickSort(Student arr[], int left, int right) {
if (left >= right) return;
int i = left, j = right;
int pivot = arr[(left + right) / 2].score;
while (i <= j) {
while (arr[i].score > pivot) i++;
while (arr[j].score < pivot) j--;
if (i <= j) {
swap(arr[i], arr[j]);
i++;
j--;
}
}
quickSort(arr, left, j);
quickSort(arr, i, right);
}
4. 调用快速排序函数进行排序
quickSort(students, , n - 1);
5. 输出排序后的学生信息
for (int i = ; i < n; i++) {
printf("%s %d\n", students[i].name, students[i].score);
}
以上就是1193题的解题思路,通过使用结构体和快速排序算法,可以方便地实现单科成绩排序的功能。