下面是一个使用指针、函数和结构体来实现按成绩高到低排序输出学生信息的示例代码:

#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 头文件来使用 mallocfree 函数。

C语言指针、函数、结构体实现学生成绩排序

原文地址: https://www.cveoy.top/t/topic/f0MB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录