用结构体的知识,帮我写一个n个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序输出学生的信息。的程序
时间: 2024-09-21 18:06:58 浏览: 32
在 C 语言中,你可以使用结构体 (struct) 来表示学生的数据,并结合数组和函数来实现按照成绩排序并输出。首先,我们需要定义一个结构体 `Student`:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体 Student
typedef struct {
int id; // 学号
char name[50]; // 姓名
float score; // 成绩
} Student;
// 比较两个学生分数的辅助函数
int compare_scores(const void *a, const void *b) {
const Student *sa = (const Student *) a;
const Student *sb = (const Student *) b;
return sa->score - sb->score;
}
// 按照成绩排序的学生数组
void sort_students(Student students[], int n) {
qsort(students, n, sizeof(Student), compare_scores);
}
// 输出学生信息的函数
void print_students(Student students[], int n) {
for (int i = 0; i < n; i++) {
printf("学号:%d 姓名:%s 成绩:%f\n", students[i].id, students[i].name, students[i].score);
}
}
int main() {
const int num_students = 5;
Student students[num_students];
// 输入学生信息
for (int i = 0; i < num_students; i++) {
printf("请输入第%d个学生的学号、姓名和成绩:\n", i + 1);
scanf("%d%s%f", &students[i].id, students[i].name, &students[i].score);
}
// 排序并打印学生信息
sort_students(students, num_students);
print_students(students, num_students);
return 0;
}
```
在这个程序中,我们首先定义了一个名为 `Student` 的结构体,然后创建了一个按成绩排序的辅助函数 `compare_scores` 和用于处理数组的 `sort_students` 函数。在 `main` 函数里,用户输入学生信息,然后调用排序和打印函数。
阅读全文