用c语言完成一下指令;有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。排序过程用函数的和指针的形式实现
时间: 2024-01-07 18:02:18 浏览: 108
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息 学生信息包括学号、姓名、成绩
下面是用指针和函数实现按成绩排序的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT 100
typedef struct {
char id[10];
char name[20];
float score;
} Student;
void sort(Student *students[], int n) {
int i, j;
Student *temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (students[i]->score < students[j]->score) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
int main() {
Student students[MAX_STUDENT];
Student *student_ptrs[MAX_STUDENT];
int i, n;
printf("请输入学生数目:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和成绩:", i + 1);
scanf("%s %s %f", students[i].id, students[i].name, &students[i].score);
student_ptrs[i] = &students[i];
}
sort(student_ptrs, n);
printf("按成绩从高到低排序的各学生信息如下:\n");
for (i = 0; i < n; i++) {
printf("%s\t%s\t%.1f\n", student_ptrs[i]->id, student_ptrs[i]->name, student_ptrs[i]->score);
}
return 0;
}
```
代码解释:
- 定义一个结构体 `Student`,表示学生信息,包括学号、姓名、成绩。
- 定义一个数组 `students`,用于存储所有学生的信息。
- 定义一个指针数组 `student_ptrs`,用于存储所有学生的地址。
- 定义函数 `sort`,用于按成绩从高到低排序学生信息。该函数接收一个指向指针数组的指针和数组长度。函数内部使用冒泡排序算法实现排序。
- 在 `main` 函数中,首先输入学生数目,然后循环输入每个学生的信息,并将学生地址存储到 `student_ptrs` 数组中。
- 调用 `sort` 函数对学生信息进行排序。
- 输出排序后的学生信息。
阅读全文