有n个学生的信息(包括学号、姓名、成绩),要求按照成绩由高到低的顺序输出各学生的信息,用c语言作答
时间: 2024-01-06 13:05:57 浏览: 96
好的,以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最多学生数
#define MAX_NAME_LEN 20 // 最长姓名长度
struct student {
int id; // 学号
char name[MAX_NAME_LEN];// 姓名
int score; // 成绩
};
// 比较函数,用于 qsort 排序
int cmp(const void *a, const void *b)
{
return ((struct student *)b)->score - ((struct student *)a)->score;
}
int main()
{
struct student students[MAX_STUDENTS];
int n;
printf("请输入学生数(不超过%d个):", MAX_STUDENTS);
scanf("%d", &n);
// 输入学生信息
printf("请按顺序输入每个学生的学号、姓名、成绩:\n");
for (int i = 0; i < n; ++i) {
scanf("%d%s%d", &students[i].id, students[i].name, &students[i].score);
}
// 按成绩从高到低排序
qsort(students, n, sizeof(struct student), cmp);
// 输出排序后的学生信息
printf("按成绩从高到低排序后的学生信息如下:\n");
for (int i = 0; i < n; ++i) {
printf("%d\t%s\t%d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
这个程序会先要求输入学生数,然后按顺序输入每个学生的学号、姓名、成绩。接着,它会对学生信息按成绩从高到低排序,并输出排序后的结果。
注意,这个程序假设每个学生的姓名长度不超过 20 个字符,而且学号和成绩都是整数。如果需要处理更复杂的情况,可能需要对代码进行修改。
阅读全文