用C语言写一个在一维数组内放十个学生成绩写一个函数当主函数调用此函数后能求出学生成绩最高分和对应学号并对学生成绩从高到低进行排序
时间: 2024-02-13 09:05:47 浏览: 58
好的,我可以帮您写这个程序。以下是代码实现:
```c
#include <stdio.h>
// 定义学生类型
typedef struct {
int id; // 学号
int score; // 成绩
} Student;
// 定义函数获取最高分和对应学号
void get_max_score(Student students[], int size, int *max_score, int *max_id) {
*max_score = students[0].score; // 假设第一个学生的成绩最高
*max_id = students[0].id; // 假设第一个学生的学号对应最高分
for (int i = 1; i < size; i++) {
if (students[i].score > *max_score) {
*max_score = students[i].score;
*max_id = students[i].id;
}
}
}
// 定义函数按成绩从高到低排序
void sort_by_score(Student students[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (students[i].score < students[j].score) {
// 交换学生信息
int temp_id = students[i].id;
students[i].id = students[j].id;
students[j].id = temp_id;
int temp_score = students[i].score;
students[i].score = students[j].score;
students[j].score = temp_score;
}
}
}
}
int main() {
Student students[10] = {
{1, 90},
{2, 85},
{3, 92},
{4, 78},
{5, 88},
{6, 95},
{7, 81},
{8, 87},
{9, 83},
{10, 79}
};
int max_score, max_id;
get_max_score(students, 10, &max_score, &max_id);
sort_by_score(students, 10);
printf("学生成绩最高分:%d,对应学号:%d\n", max_score, max_id);
printf("学生成绩从高到低排序:\n");
for (int i = 0; i < 10; i++) {
printf("学号:%d,成绩:%d\n", students[i].id, students[i].score);
}
return 0;
}
```
运行结果如下:
```
学生成绩最高分:95,对应学号:6
学生成绩从高到低排序:
学号:6,成绩:95
学号:3,成绩:92
学号:1,成绩:90
学号:5,成绩:88
学号:8,成绩:87
学号:2,成绩:85
学号:9,成绩:83
学号:7,成绩:81
学号:10,成绩:79
学号:4,成绩:78
```
阅读全文