用一个结构体数组,记录一个家族的人口状况。每个数组元素包含两个成员,一个是年龄(整型数据,从键盘输入);另外一个是年龄段(小于35岁是青年,大于60是老年,其余是中年,此成员是枚举类型,按照输入的年龄赋值)。要求按照年龄大小输出该结构体数组的全部成员,假设数组有十个元素。
时间: 2023-12-29 07:05:38 浏览: 19
以下是一个可能的实现:
```c
#include <stdio.h>
enum AgeGroup {
YOUTH,
MIDDLE_AGED,
ELDERLY
};
struct Person {
int age;
enum AgeGroup age_group;
};
int main() {
struct Person family[10];
// 从键盘输入每个人的年龄,并根据年龄计算年龄段
for (int i = 0; i < 10; i++) {
printf("请输入第%d个人的年龄:", i+1);
scanf("%d", &family[i].age);
if (family[i].age < 35) {
family[i].age_group = YOUTH;
} else if (family[i].age > 60) {
family[i].age_group = ELDERLY;
} else {
family[i].age_group = MIDDLE_AGED;
}
}
// 按照年龄从小到大排序
for (int i = 0; i < 9; i++) {
for (int j = i+1; j < 10; j++) {
if (family[i].age > family[j].age) {
struct Person temp = family[i];
family[i] = family[j];
family[j] = temp;
}
}
}
// 输出每个人的信息
for (int i = 0; i < 10; i++) {
printf("第%d个人:年龄%d,", i+1, family[i].age);
switch (family[i].age_group) {
case YOUTH:
printf("青年\n");
break;
case MIDDLE_AGED:
printf("中年\n");
break;
case ELDERLY:
printf("老年\n");
break;
}
}
return 0;
}
```
这个程序首先定义了一个枚举类型 `AgeGroup`,用于表示年龄段。然后定义了一个结构体 `Person`,包含两个成员:年龄和年龄段。在 `main` 函数中,先从键盘输入每个人的年龄,并根据年龄计算出年龄段。然后使用冒泡排序法,按照年龄从小到大排序。最后逐个输出每个人的信息,包括年龄和年龄段。