用一个结构体数组,记录一个家族的人口状况。每个数组元素包含两个成员,一个是年龄(整型数据,从键盘输入);另外一个是年龄段(小于35岁是青年,大于60是老年,其余是中年,此成员是枚举类型,按照输入的年龄赋值)。要求按照年龄大小输出该结构体数组的全部成员,假设数组有十个元素。用c语言
时间: 2023-12-29 15:05:38 浏览: 56
以下是代码实现:
```c
#include <stdio.h>
enum age_group {
YOUTH,
MIDDLE_AGE,
ELDERLY
};
struct person {
int age;
enum age_group group;
};
int main() {
struct person family[10];
int i, j, temp_age;
enum age_group temp_group;
printf("Please enter the age of 10 family members:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &temp_age);
if (temp_age < 35) {
temp_group = YOUTH;
} else if (temp_age > 60) {
temp_group = ELDERLY;
} else {
temp_group = MIDDLE_AGE;
}
family[i].age = temp_age;
family[i].group = temp_group;
}
// Sort by age using bubble sort
for (i = 0; i < 9; i++) {
for (j = 0; j < 9 - i; j++) {
if (family[j].age > family[j+1].age) {
// Swap ages
temp_age = family[j].age;
family[j].age = family[j+1].age;
family[j+1].age = temp_age;
// Swap age groups
temp_group = family[j].group;
family[j].group = family[j+1].group;
family[j+1].group = temp_group;
}
}
}
printf("Family members sorted by age:\n");
for (i = 0; i < 10; i++) {
printf("%d ", family[i].age);
switch (family[i].group) {
case YOUTH:
printf("Youth\n");
break;
case MIDDLE_AGE:
printf("Middle age\n");
break;
case ELDERLY:
printf("Elderly\n");
break;
}
}
return 0;
}
```
这个程序首先要求用户输入 10 个家庭成员的年龄,并根据输入的年龄确定该成员的年龄段。然后,使用冒泡排序按照年龄大小对结构体数组进行排序,并输出每个成员的年龄和年龄段。
阅读全文