void birth sort(struct person piint n):(7分) 实现公民信息按照生日排序的函数,排序原则: 按年龄从大到小排序 其中数组 p存放 n 个公民信息。
时间: 2024-02-12 15:07:03 浏览: 58
以下是按照生日排序的 C 代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct person {
int year;
int month;
int day;
};
int compare(const void *a, const void *b) {
struct person *p1 = (struct person *)a;
struct person *p2 = (struct person *)b;
if (p1->year != p2->year) {
return p2->year - p1->year;
} else if (p1->month != p2->month) {
return p2->month - p1->month;
} else {
return p2->day - p1->day;
}
}
void birth_sort(struct person p[], int n) {
qsort(p, n, sizeof(struct person), compare);
}
int main() {
struct person p[3] = {
{1990, 5, 1},
{1998, 12, 31},
{1990, 3, 15}
};
birth_sort(p, 3);
for (int i = 0; i < 3; i++) {
printf("%d-%d-%d\n", p[i].year, p[i].month, p[i].day);
}
return 0;
}
```
函数 `compare` 用于比较两个 `struct person` 结构体的大小关系。按照题目的要求,先比较年份,年份相等就比较月份,月份相等就比较日期。注意这里使用了 `qsort` 函数来进行排序。最后在 `main` 函数中,创建了一个包含 3 个公民信息的结构体数组,经过排序后输出结果。
阅读全文