使用c语言实现:4.编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n 小于50,学号小于10位。
时间: 2023-12-03 12:47:44 浏览: 76
C语言输入学生成绩,计算并输出这些学生的最低分、最高分、平均分。
以下是使用C语言实现输入n个学生的学号和成绩,按成绩从高到低排序输出的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 50
#define MAX_ID_LENGTH 10
typedef struct {
char id[MAX_ID_LENGTH+1];
float score;
} Student;
void bubble_sort(Student arr[], int n);
int main() {
int n;
Student students[MAX_STUDENT_NUM];
printf("请输入学生数量:");
scanf("%d", &n);
if (n > MAX_STUDENT_NUM) {
printf("学生数量不能超过 %d\n", MAX_STUDENT_NUM);
return 1;
}
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的学号和成绩(中间用空格隔开):", i+1);
scanf("%s %f", students[i].id, &students[i].score);
}
bubble_sort(students, n);
printf("排序后的学生列表:\n");
for (int i = 0; i < n; i++) {
printf("%s %.1f\n", students[i].id, students[i].score);
}
return 0;
}
void bubble_sort(Student arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j].score < arr[j+1].score) {
Student temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
```
该程序定义了一个结构体 `Student`,包含学号和成绩两个字段,同时使用了冒泡排序算法对学生数组进行排序。在输入过程中,通过 `scanf()` 函数获取学生的学号和成绩,然后存储到对应的结构体对象中。最后,按照成绩从高到低排序并输出学生列表。
需要注意的是,本程序中对数据的输入没有进行安全性检查,可能会导致缓冲区溢出等问题。实际应用中需要对输入进行合法性检查并进行错误处理。
阅读全文