c语言结构体数组降序排序
时间: 2023-12-12 18:35:46 浏览: 184
以下是C语言结构体数组降序排序的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Person {
int no;
int age;
int height;
};
int cmp(const void *a, const void *b) {
struct Person *pa = (struct Person *)a;
struct Person *pb = (struct Person *)b;
return pb->height - pa->height;
}
int main() {
struct Person array[] = {{1, 20, 170}, {2, 25, 180}, {3, 30, 175}};
int n = sizeof(array) / sizeof(struct Person);
qsort(array, n, sizeof(struct Person), cmp);
for (int i = 0; i < n; i++) {
printf("no:%d age:%d height:%d\n", array[i].no, array[i].age, array[i].height);
}
return 0;
}
```
解释如下:
- 首先定义了一个结构体`Person`,包含三个成员变量`no`、`age`和`height`。
- 然后定义了一个`cmp`函数,用于比较两个`Person`结构体的`height`成员变量,实现降序排序。
- 在`main`函数中定义了一个`Person`类型的数组`array`,并初始化了三个元素。
- 使用`qsort`函数对数组进行排序,其中第二个参数是数组元素个数,第三个参数是每个元素的大小,第四个参数是比较函数。
- 最后遍历数组并输出每个元素的成员变量。
阅读全文