C语言指针、函数、结构体实现学生成绩排序
下面是一个使用指针、函数和结构体来实现按成绩高到低排序输出学生信息的示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义学生结构体
struct Student {
char name[50];
int age;
float score;
};
// 根据成绩排序的比较函数
int compare(const void* a, const void* b) {
struct Student* s1 = (struct Student*)a;
struct Student* s2 = (struct Student*)b;
if (s1->score < s2->score) {
return 1;
} else if (s1->score > s2->score) {
return -1;
} else {
return 0;
}
}
// 输入学生信息
void inputStudents(struct Student* students, int num) {
for (int i = 0; i < num; i++) {
printf("请输入第 %d 个学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第 %d 个学生的年龄:", i + 1);
scanf("%d", &(students[i].age));
printf("请输入第 %d 个学生的成绩:", i + 1);
scanf("%f", &(students[i].score));
}
}
// 输出学生信息
void outputStudents(struct Student* students, int num) {
for (int i = 0; i < num; i++) {
printf("姓名:%s,年龄:%d,成绩:%f\n", students[i].name, students[i].age, students[i].score);
}
}
int main() {
int num;
printf("请输入学生人数:");
scanf("%d", &num);
// 动态分配学生结构体数组内存
struct Student* students = (struct Student*)malloc(num * sizeof(struct Student));
// 输入学生信息
inputStudents(students, num);
// 按成绩高到低排序
qsort(students, num, sizeof(struct Student), compare);
// 输出学生信息
outputStudents(students, num);
// 释放内存
free(students);
return 0;
}
这个程序首先通过 inputStudents 函数输入学生的姓名、年龄和成绩。然后,使用 qsort 函数根据成绩的比较函数 compare 对学生数组进行排序。最后,通过 outputStudents 函数输出排序后的学生信息。请注意,在使用 qsort 函数之前,需要包含 stdlib.h 头文件来使用 malloc 和 free 函数。
原文地址: https://www.cveoy.top/t/topic/f0MB 著作权归作者所有。请勿转载和采集!