用c语言写一个程序:用一个结构体数组记录一个家族的人口状况。每个数组元素包含两个成员,一个是年龄(整型数据,从键盘输入);另外一个是年龄段(小于35岁是青年,大于60是老年,其余是中年,此成员是枚举类型,按照输入的年龄赋值)。要求按照年龄大小输出该结构体数组的全部成员,假设数组有十个元素。
时间: 2024-02-01 17:16:49 浏览: 75
c语言编程题之数组操作下一个更大的元素.zip
以下是用 C 语言编写的程序,实现了按年龄大小输出家族成员信息的功能:
```c
#include <stdio.h>
// 定义年龄段的枚举类型
enum { YOUTH, MIDDLE_AGE, ELDERLY };
// 定义家族成员结构体
struct member {
int age; // 年龄
int age_group; // 年龄段
};
int main() {
struct member 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].age_group = YOUTH;
} else if (family[i].age > 60) {
family[i].age_group = ELDERLY;
} else {
family[i].age_group = MIDDLE_AGE;
}
}
// 按年龄从小到大排序,并输出家族成员信息
for (i = 0; i < 9; i++) {
int j, min_age = family[i].age, min_index = i;
for (j = i + 1; j < 10; j++) {
if (family[j].age < min_age) {
min_age = family[j].age;
min_index = j;
}
}
if (min_index != i) {
struct member temp = family[i];
family[i] = family[min_index];
family[min_index] = temp;
}
printf("第%d个家族成员,年龄:%d,年龄段:", i + 1, family[i].age);
switch (family[i].age_group) {
case YOUTH:
printf("青年\n");
break;
case MIDDLE_AGE:
printf("中年\n");
break;
case ELDERLY:
printf("老年\n");
break;
}
}
// 输出最后一个成员信息(因为最后一个成员不需要和其他成员比较年龄)
printf("第%d个家族成员,年龄:%d,年龄段:", 10, family[9].age);
switch (family[9].age_group) {
case YOUTH:
printf("青年\n");
break;
case MIDDLE_AGE:
printf("中年\n");
break;
case ELDERLY:
printf("老年\n");
break;
}
return 0;
}
```
程序运行时,先要输入每个家族成员的年龄。程序会自动判断每个成员的年龄段,并将其存储在 `age_group` 成员中。然后,程序会按照年龄从小到大排序,并输出每个成员的年龄和年龄段信息。最后,程序会输出最后一个成员的信息(因为最后一个成员不需要和其他成员比较年龄)。
阅读全文