实验:指针与结构体数组

小组讨论确定- - 个结构体类型,如学生成绩管理(成员可以包括学号、姓名、课程成绩等)、车辆管理(成员可以包括车牌、颜色、车型等)、家电销售(日期、家电名称、进价、售价、生产厂商等),要求至少包含3个成员,定义该类型的一个数组完成赋值,编程实现对结构体类型数组的排序并输出(两个排序功能:选取- - 个数值型成员排序,再选- 一个字符数组类型成员排序,用上冒泡法和选择法两中排序方法)。

结构体数组,难道你的教材上没有例子么?照葫芦画瓢写一个

该回答引用GPTᴼᴾᴱᴺᴬᴵ
下面是一个示例代码,以学生成绩管理为例:

#include <stdio.h>
#include <string.h>

#define MAX_NUM 100

struct student {
    char id[20];
    char name[20];
    int score;
};

void bubble_sort(struct student *arr, int len) {
    int i, j;
    for (i = 0; i < len - 1; i++) {
        for (j = 0; j < len - i - 1; j++) {
            if (arr[j].score < arr[j + 1].score) {
                struct student tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}

void selection_sort(struct student *arr, int len) {
    int i, j;
    for (i = 0; i < len - 1; i++) {
        int min_idx = i;
        for (j = i + 1; j < len; j++) {
            if (strcmp(arr[j].name, arr[min_idx].name) < 0) {
                min_idx = j;
            }
        }
        if (min_idx != i) {
            struct student tmp = arr[i];
            arr[i] = arr[min_idx];
            arr[min_idx] = tmp;
        }
    }
}

int main() {
    struct student students[MAX_NUM] = {
        {"1001", "Alice", 85},
        {"1002", "Bob", 90},
        {"1003", "Charlie", 72},
        {"1004", "David", 94},
        {"1005", "Eve", 80},
        {"1006", "Frank", 68},
        {"1007", "Grace", 91},
        {"1008", "Helen", 87},
        {"1009", "Isaac", 78},
        {"1010", "Jack", 83}
    };
    int num = 10;
    int i;
    
    printf("Original:\n");
    for (i = 0; i < num; i++) {
        printf("%s %s %d\n", students[i].id, students[i].name, students[i].score);
    }
    
    // sort by score using bubble sort
    bubble_sort(students, num);
    printf("Sorted by score using bubble sort:\n");
    for (i = 0; i < num; i++) {
        printf("%s %s %d\n", students[i].id, students[i].name, students[i].score);
    }
    
    // sort by name using selection sort
    selection_sort(students, num);
    printf("Sorted by name using selection sort:\n");
    for (i = 0; i < num; i++) {
        printf("%s %s %d\n", students[i].id, students[i].name, students[i].score);
    }
    
    return 0;
}


这个示例代码定义了一个学生成绩管理的结构体类型,包括学号、姓名、课程成绩三个成员。使用一个长度为10的结构体数组进行赋值,并分别用冒泡法和选择法实现按成绩排序和按姓名排序。可以根据需求修改成员的类型和个数,以及数组的长度和内容。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^