用C语言在学生基本信息表中,包含了每个学生的学号、姓名和成绩等相关信息。请编写程序,输入每个学生的信息,并按照成绩从低到高的顺序输出每个学生的信息
时间: 2024-09-26 18:17:34 浏览: 34
在C语言中,我们可以使用结构体(struct)来定义学生的基本信息,然后结合数组或链表来存储这些信息。这里我们先展示一个基于数组的例子,使用`qsort`函数对成绩进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生信息结构
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
float score; // 成绩
} Student;
// 比较函数,用于排序
int compare(const void *a, const void *b) {
const Student *sa = a, *sb = b;
return sa->score - sb->score;
}
void input_students(Student students[], int num_students) {
printf("请输入学生信息(学号 姓名 成绩):\n");
for (int i = 0; i < num_students; i++) {
scanf("%s %s %.2f", students[i].id, students[i].name, &students[i].score);
}
}
void output_students_sorted(Student students[], int num_students) {
qsort(students, num_students, sizeof(Student), compare); // 排序
printf("\n按照成绩从低到高排列的学生信息:\n");
for (int i = 0; i < num_students; i++) {
printf("学号: %s, 姓名: %s, 成绩: %.2f\n", students[i].id, students[i].name, students[i].score);
}
}
int main() {
int num_students;
printf("请输入学生总数: ");
scanf("%d", &num_students);
Student* students = malloc(num_students * sizeof(Student)); // 动态分配内存
if (!students) {
printf("内存分配失败!\n");
return 1;
}
input_students(students, num_students);
output_students_sorted(students, num_students);
free(students); // 释放内存
return 0;
}
```
在这个程序里,用户首先输入学生数量和所有学生的学号、姓名和成绩,然后通过`compare`函数配合`qsort`将学生按成绩降序排列,最后输出排序后的学生信息。
阅读全文