用c语言实现【问题描述】输入一组人员的姓名 身高(以cm为单位),输出这组人员中身高的中位数,以及位于中位数位置的人员信息。 当输入姓名为#时结束信息输入。人数不超过15人。 中位数是按大小顺序排列的一组数据中居于中间位置的数。 例如,输入N人信息,当N为奇数时,身高中位数就是身高为正中间的数;中位数位置人员为正中1人 当N为偶数时,身高中位数就是处于正中间2个身高数的平均值,中位数位置人员为中间2人。 【输入形式】姓名 身高 以空格或回车分隔数据,输入姓名为#时,输入信息结束 【输出形式】先输出按身高排序后的各人姓名身高,一行输出一人信息。 然后输出中位数以及中位数人员信息如下: 人数为奇数时,输出mid height=身高,name=姓名 人数为偶数时,输出mid height=身高 (正中2人身高均值,保留1位小数输出) first person:姓名,身高 (正中第1人) second person:姓名,身高 (正中第2人)
时间: 2024-02-10 07:06:20 浏览: 28
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_PERSON 15
struct Person {
char name[20];
int height;
};
void sort(struct Person persons[], int n) {
int i, j;
struct Person tmp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (persons[i].height > persons[j].height) {
tmp = persons[i];
persons[i] = persons[j];
persons[j] = tmp;
}
}
}
}
int main() {
struct Person persons[MAX_PERSON];
int n = 0, i;
while (1) {
scanf("%s", persons[n].name);
if (persons[n].name[0] == '#') {
break;
}
scanf("%d", &persons[n].height);
n++;
if (n >= MAX_PERSON) {
break;
}
}
sort(persons, n);
printf("Sorted persons:\n");
for (i = 0; i < n; i++) {
printf("%s %d\n", persons[i].name, persons[i].height);
}
printf("Median:\n");
if (n % 2 == 1) {
printf("mid height=%d,name=%s\n", persons[n / 2].height, persons[n / 2].name);
} else {
printf("mid height=%.1f\n", (persons[n / 2 - 1].height + persons[n / 2].height) / 2.0);
printf("first person:%s,%d\n", persons[n / 2 - 1].name, persons[n / 2 - 1].height);
printf("second person:%s,%d\n", persons[n / 2].name, persons[n / 2].height);
}
return 0;
}
```
代码的思路是:
1. 定义一个 `Person` 结构体,包含人员的姓名和身高;
2. 定义一个 `sort` 函数,用于按身高从小到大排序;
3. 在 `main` 函数中循环读入人员的姓名和身高,如果姓名为 `#` 或超过最大人数,则退出循环;
4. 调用 `sort` 函数将人员按身高排序;
5. 输出排序后的人员信息;
6. 根据人数的奇偶性输出中位数信息,如果是偶数还需要输出中位数位置的两个人员信息。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)