有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出学生成绩最高分和对应的学号,并能对学生成绩从高到低进行排序。 c
时间: 2023-11-22 10:04:55 浏览: 119
可以按照以下步骤来实现:
1. 定义一个结构体 `student`,包含学号 `id` 和成绩 `score` 两个成员变量。
2. 定义一个函数 `void find_max_score_and_sort(student *arr, int n)`,参数是一个指向 `student` 数组的指针和数组长度 `n`。
3. 在函数内部,遍历数组,找到最高分和对应的学号,并保存在变量 `max_score` 和 `max_id` 中。
4. 使用冒泡排序或快速排序等算法,对学生成绩从高到低进行排序。
下面是完整的代码示例:
```c
#include <stdio.h>
typedef struct student {
int id;
int score;
} student;
void find_max_score_and_sort(student *arr, int n) {
int max_score = -1;
int max_id = -1;
// 找到最高分和对应的学号
for (int i = 0; i < n; i++) {
if (arr[i].score > max_score) {
max_score = arr[i].score;
max_id = arr[i].id;
}
}
printf("最高分是 %d,对应的学号是 %d\n", max_score, max_id);
// 对学生成绩从高到低进行排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j].score < arr[j + 1].score) {
student temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("学生成绩从高到低排序结果:\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,成绩:%d\n", arr[i].id, arr[i].score);
}
}
int main() {
student arr[10] = {
{1, 80},
{2, 90},
{3, 70},
{4, 85},
{5, 95},
{6, 75},
{7, 60},
{8, 92},
{9, 88},
{10, 65}
};
find_max_score_and_sort(arr, 10);
return 0;
}
```
阅读全文