编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n 小于50,学号小于10位。用C语言结构体实现
时间: 2024-03-07 17:50:12 浏览: 103
好的,以下是使用C语言结构体实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 50
#define MAX_ID_LEN 10
typedef struct {
char id[MAX_ID_LEN + 1];
float score;
} Student;
int cmp(const void *a, const void *b) {
return ((Student *)b)->score > ((Student *)a)->score ? 1 : -1;
}
int main() {
int n;
Student students[MAX_N];
printf("请输入学生人数 n (n <= 50): ");
scanf("%d", &n);
printf("请输入每个学生的学号和成绩,中间用空格隔开:\n");
for (int i = 0; i < n; i++) {
scanf("%s %f", students[i].id, &students[i].score);
}
qsort(students, n, sizeof(Student), cmp);
printf("按成绩从高到低排序输出:\n");
for (int i = 0; i < n; i++) {
printf("%s %.1f\n", students[i].id, students[i].score);
}
return 0;
}
```
在这个程序中,我们首先定义了一个 `Student` 结构体类型,包含了学生的学号和成绩,其中学号使用了一个字符串类型的字符数组来存储,成绩使用了一个浮点数类型来存储。然后我们使用一个数组 `students` 来存储所有的学生信息。
我们在 `main` 函数中首先读入学生的数量 `n`,然后依次读入每个学生的学号和成绩,并存储到 `students` 数组中。
接下来,我们使用 C 标准库中的 `qsort` 函数对 `students` 数组进行排序,排序的依据是每个学生的成绩,从高到低排序。
最后,我们依次输出排序后的每个学生的学号和成绩。
阅读全文