小组讨论确定- - 个结构体类型,如学生成绩管理(成员可以包括学号、姓名、课程成绩等)、车辆管理(成员可以包括车牌、颜色、车型等)、家电销售(日期、家电名称、进价、售价、生产厂商等),要求至少包含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的结构体数组进行赋值,并分别用冒泡法和选择法实现按成绩排序和按姓名排序。可以根据需求修改成员的类型和个数,以及数组的长度和内容。
不知道你这个问题是否已经解决, 如果还没有解决的话: