用一个结构体数组,记录一个家族的人口状况。每个数组元素包含两个成员,一个是年龄(整型数据,从键盘输入);另外一个是年龄段(小于35岁是青年,大于60是老年,其余是中年,此成员是枚举类型,按照输入的年龄赋值)。要求按照年龄大小输出该结构体数组的全部成员,假设数组有十个元素。
时间: 2023-12-29 08:05:37 浏览: 71
下面是用 C 语言实现的一个示例程序:
```c
#include <stdio.h>
enum AgeRange {
Youth,
MiddleAged,
Elderly
};
struct FamilyMember {
int age;
enum AgeRange range;
};
int main() {
struct FamilyMember family[10];
int i;
// 输入家族成员的年龄
for (i = 0; i < 10; i++) {
printf("请输入第%d个家族成员的年龄:", i + 1);
scanf("%d", &family[i].age);
// 根据年龄分配年龄段
if (family[i].age < 35) {
family[i].range = Youth;
} else if (family[i].age > 60) {
family[i].range = Elderly;
} else {
family[i].range = MiddleAged;
}
}
// 按照年龄排序并输出
for (i = 0; i < 9; i++) {
int j;
for (j = i + 1; j < 10; j++) {
if (family[i].age > family[j].age) {
struct FamilyMember temp = family[i];
family[i] = family[j];
family[j] = temp;
}
}
}
printf("按照年龄从小到大排序后的家族成员列表:\n");
for (i = 0; i < 10; i++) {
printf("年龄:%d,年龄段:", family[i].age);
switch (family[i].range) {
case Youth:
printf("青年\n");
break;
case MiddleAged:
printf("中年\n");
break;
case Elderly:
printf("老年\n");
break;
}
}
return 0;
}
```
上述代码中,我们首先定义了一个枚举类型 `AgeRange`,用于表示家族成员的年龄段。然后,我们定义了一个结构体 `FamilyMember`,包含两个成员:`age` 表示家族成员的年龄,`range` 表示该成员的年龄段。
接着,我们在 `main` 函数中创建了一个包含 10 个元素的结构体数组 `family`,并使用循环语句输入每个成员的年龄,并根据年龄分配年龄段。
最后,我们使用双重循环对结构体数组进行排序,按照年龄从小到大输出家族成员的信息。在输出年龄段时,我们使用 `switch` 语句根据不同的枚举值输出相应的字符串。
阅读全文