用C语言完成:用一个结构体数组记录一个家族的人口状况。每个数组元素包含两个成员,一个是年龄(整型数组,要求从键盘输出)另外的是年龄段(小于35是青年,大于60是老年,其余是中年此成员是枚举类型,按照输入的年龄赋值)要求按照年龄大小输出该结构体数组的全部成员,假设数组有十个元素
时间: 2024-02-01 12:16:10 浏览: 53
以下是用C语言实现的代码:
```c
#include <stdio.h>
enum AgeGroup { YOUTH, MIDDLE_AGE, ELDERLY };
struct Person {
int age;
enum AgeGroup age_group;
};
void input_person(struct Person* person) {
printf("Please enter the age: ");
scanf("%d", &person->age);
if (person->age < 35) {
person->age_group = YOUTH;
} else if (person->age > 60) {
person->age_group = ELDERLY;
} else {
person->age_group = MIDDLE_AGE;
}
}
void sort_persons(struct Person persons[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (persons[i].age > persons[j].age) {
struct Person temp = persons[i];
persons[i] = persons[j];
persons[j] = temp;
}
}
}
}
void print_persons(struct Person persons[], int count) {
for (int i = 0; i < count; i++) {
printf("Age: %d, Age group: ", persons[i].age);
switch (persons[i].age_group) {
case YOUTH:
printf("Youth\n");
break;
case MIDDLE_AGE:
printf("Middle age\n");
break;
case ELDERLY:
printf("Elderly\n");
break;
}
}
}
int main() {
const int COUNT = 10;
struct Person persons[COUNT];
for (int i = 0; i < COUNT; i++) {
printf("Person %d:\n", i + 1);
input_person(&persons[i]);
}
sort_persons(persons, COUNT);
printf("Sorted persons:\n");
print_persons(persons, COUNT);
return 0;
}
```
该程序中,`struct Person` 表示一个人的信息,包含年龄和年龄段两个成员,其中年龄段是通过枚举类型 `enum AgeGroup` 来表示的。`input_person` 函数用于从键盘输入一个人的信息,并根据年龄计算出年龄段。`sort_persons` 函数用于按照年龄大小对人的信息进行排序,使用冒泡排序算法实现。`print_persons` 函数用于输出排序后的人的信息。在 `main` 函数中,先定义了一个包含 10 个元素的 `struct Person` 数组,然后循环调用 `input_person` 函数输入每个人的信息,接着调用 `sort_persons` 函数对人的信息进行排序,最后调用 `print_persons` 函数输出排序后的人的信息。
阅读全文