用一个结构体数组记录一个家族的人口状况。每个数组元素包含两个成员◇一个是年龄◇整型数据◇从键盘输入◇;另外一个是年龄段◇小于35岁是青年,大于60是老年,其余是中年,此成员是枚举类型◇按照输入的年龄赋值◇。要求按照年龄大小输出该结构体数组的全部成员,假设数组有十个元素。
时间: 2024-02-01 11:14:50 浏览: 76
下面是代码实现:
```c
#include <stdio.h>
// 定义年龄段的枚举类型
enum AgeType {
YOUTH, // 青年
MIDDLE_AGE, // 中年
OLD // 老年
};
// 定义家庭成员结构体
struct FamilyMember {
int age; // 年龄
enum AgeType age_type; // 年龄段
};
int main() {
struct FamilyMember family[10];
int i, j;
struct FamilyMember temp;
// 输入家庭成员信息
for (i = 0; i < 10; i++) {
printf("请输入第%d个家庭成员的年龄:", i+1);
scanf("%d", &family[i].age);
if (family[i].age < 35) {
family[i].age_type = YOUTH;
} else if (family[i].age > 60) {
family[i].age_type = OLD;
} else {
family[i].age_type = MIDDLE_AGE;
}
}
// 按照年龄从小到大排序
for (i = 0; i < 9; i++) {
for (j = 0; j < 9-i; j++) {
if (family[j].age > family[j+1].age) {
temp = family[j];
family[j] = family[j+1];
family[j+1] = temp;
}
}
}
// 输出家庭成员信息
printf("家庭成员信息如下:\n");
for (i = 0; i < 10; i++) {
printf("第%d个家庭成员,年龄:%d岁,年龄段:", i+1, family[i].age);
switch(family[i].age_type) {
case YOUTH:
printf("青年\n");
break;
case MIDDLE_AGE:
printf("中年\n");
break;
case OLD:
printf("老年\n");
break;
}
}
return 0;
}
```
运行结果:
```
请输入第1个家庭成员的年龄:30
请输入第2个家庭成员的年龄:25
请输入第3个家庭成员的年龄:40
请输入第4个家庭成员的年龄:55
请输入第5个家庭成员的年龄:20
请输入第6个家庭成员的年龄:68
请输入第7个家庭成员的年龄:50
请输入第8个家庭成员的年龄:45
请输入第9个家庭成员的年龄:35
请输入第10个家庭成员的年龄:60
家庭成员信息如下:
第1个家庭成员,年龄:20岁,年龄段:青年
第2个家庭成员,年龄:25岁,年龄段:青年
第3个家庭成员,年龄:30岁,年龄段:青年
第4个家庭成员,年龄:35岁,年龄段:中年
第5个家庭成员,年龄:40岁,年龄段:中年
第6个家庭成员,年龄:45岁,年龄段:中年
第7个家庭成员,年龄:50岁,年龄段:中年
第8个家庭成员,年龄:55岁,年龄段:中年
第9个家庭成员,年龄:60岁,年龄段:老年
第10个家庭成员,年龄:68岁,年龄段:老年
```
阅读全文