设有三人的姓名和年龄存在结构数组中,编写程序输出三人中年龄居中者的姓名和年龄。使用如下结构定义人的信息: struct man{ char name[20]; int age };
时间: 2023-06-20 17:08:46 浏览: 232
以下是一个实现该功能的 C 语言程序:
```c
#include <stdio.h>
#include <string.h>
struct man {
char name[20];
int age;
};
int main() {
struct man people[3] = {{"Tom", 21}, {"Jerry", 25}, {"Alice", 23}};
int age1 = people[0].age, age2 = people[1].age, age3 = people[2].age;
char *name1 = people[0].name, *name2 = people[1].name, *name3 = people[2].name;
if (age1 > age2) {
int tmpAge = age1;
age1 = age2;
age2 = tmpAge;
char *tmpName = name1;
name1 = name2;
name2 = tmpName;
}
if (age1 > age3) {
int tmpAge = age1;
age1 = age3;
age3 = tmpAge;
char *tmpName = name1;
name1 = name3;
name3 = tmpName;
}
if (age2 > age3) {
int tmpAge = age2;
age2 = age3;
age3 = tmpAge;
char *tmpName = name2;
name2 = name3;
name3 = tmpName;
}
printf("The person with median age:\nName: %s, Age: %d\n", name2, age2);
return 0;
}
```
程序中定义了一个结构体 `man`,包含两个成员:姓名和年龄。在 `main` 函数中,我们定义了一个结构体数组 `people`,用于存储三个人的姓名和年龄。接下来,我们通过比较三个人的年龄,将他们按照年龄从小到大排序,并将年龄居中者的姓名和年龄输出。
注意,在比较年龄并排序时,我们将年龄从小到大排序,并将姓名同时进行交换。这是因为在排序时,我们需要保持姓名和年龄的对应关系,从而在最后正确输出年龄居中者的姓名。
阅读全文