对结构体数组进行冒泡排序(根据名字大小)
typedef struct avperson{
char name[30];
int age;
char bust;
char product[50];
}AVPerson;
AVPerson per1 = {"cangJingKong", 25, 'D', "secondDream"};
AVPerson per2 = {"longZeLuoLa", 22, 'C', "daMingGong"};
AVPerson per3 = {"buoDuoYeJieYi", 27, 'D', "jiaYouXianQi"};
AVPerson per4 = {"jiZeMingBu", 24, 'E', "yiLuXingXi"};
AVPerson arr[4] = {per1, per2, per3, per4};
//打印出每一个元素的信息
for (int i = 0; i < 4; i++) {
printf("%13s -- %d -- %c -- %s\n", arr[i].name, arr[i].age, arr[i].bust, arr[i].product);
}
printf("------------------------------------------\n");
for (int i = 0; i < 4 - 1; i++) {
for (int j = 0; j < 4 - 1 - i; j++) {
if (strcmp(arr[j].name, arr[j+1].name) < 0) {
AVPerson temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
printf("按名字大小比较排序后:\n");
for (int i = 0; i < 4; i++) {
printf("%13s -- %d -- %c -- %s\n", arr[i].name, arr[i].age, arr[i].bust, arr[i].product);
}
需要注意的问题:
- 结构体数组的定义:本题中的定义格式为 AVPerson arr[4] ={per1, per2, per3, per4
}; 其中结构体数组的类型和每个结构体的类型一样,都是AVPerson - 冒泡排序的关键代码中,比较的是名字的字符大小,交换的是av女优在数组的位置,所以定义一个同样数据类型的结构体数组AVPerson temp = {0}来接收交换值.
控制台运行示例: