编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n小于50,学号小于10位。C语言
时间: 2023-09-14 18:09:15 浏览: 92
以下是一个示例程序,使用简单的冒泡排序实现成绩从高到低排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 50
#define MAX_ID_LEN 10
typedef struct {
char id[MAX_ID_LEN + 1];
float score;
} Student;
void sort_students(Student students[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (students[j].score < students[j+1].score) {
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
int main() {
Student students[MAX_N];
int n, i;
printf("请输入学生数量n:");
scanf("%d", &n);
printf("请输入学生的学号和成绩(每行一个):\n");
for (i = 0; i < n; i++) {
scanf("%s %f", students[i].id, &students[i].score);
}
sort_students(students, n);
printf("按成绩从高到低排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%s %.1f\n", students[i].id, students[i].score);
}
return 0;
}
```
注意,此程序并没有对输入的学号进行长度检查,如果需要对学号长度进行限制,可以在结构体中增加一个 `int` 类型的字段来记录学号长度,并在输入时进行检查。
阅读全文