编写程序,从键盘输入 n (n<30)个学生的C语言考试成绩(整型)并存入数组中,按成绩高到低排序,并输出排序后的成绩。 输入格式: 用户输入n的值和n个成绩 输出格式: 输出成绩降序排列后的结果
时间: 2025-06-09 11:00:17 浏览: 9
在C语言中,你可以按照以下步骤编写程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 30
// 定义结构体来存储学生信息
typedef struct {
int score;
} Student;
// 比较函数,用于qsort()排序
int compare(const void* a, const void* b) {
return ((Student*)b)->score - ((Student*)a)->score; // 降序排列
}
void input_scores(Student scores[], int n) {
for (int i = 0; i < n; i++) {
scanf("%d", &scores[i].score);
}
}
void sort_and_output(Student scores[], int n) {
qsort(scores, n, sizeof(Student), compare); // 使用快速排序算法
printf("成绩降序排列后的结果:\n");
for (int i = 0; i < n; i++) {
printf("%d ", scores[i].score);
}
printf("\n");
}
int main() {
int n;
printf("请输入学生人数(n<30): ");
scanf("%d", &n);
if (n > MAX_STUDENTS) {
printf("错误: 学生人数超过限制.\n");
return 1;
}
Student *scores = malloc(n * sizeof(Student)); //动态分配内存
input_scores(scores, n);
sort_and_output(scores, n);
free(scores); //释放内存
return 0;
}
```
在这个程序中,首先定义了一个包含学生成绩的结构体`Student`,然后使用`compare`函数作为`qsort`的比较指针,实现成绩的降序排序。`input_scores`函数负责接收用户的输入,而`sort_and_output`函数则用于打印排序后的成绩。
当运行这个程序时,按照提示输入学生人数和成绩,程序会将成绩存入数组并显示排序后的结果。如果输入的学生人数超过了预设的最大值,程序会给出错误信息并退出。最后,记得在`main`结束前释放动态分配的内存。
阅读全文