【问题描述】 从键盘输入7个人的月收入(均为正整数),计算并输出这7个人的收入中位数。中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数。 【输入形式】 7个正整数构成的数据序列,数与数之间使用空格进行分割。 【输出形式】 1个正整数。 用C语言
时间: 2024-03-23 22:41:41 浏览: 154
以下是基于C语言的程序实现,可以实现计算一组数据中的中位数。
```c
#include <stdio.h>
#include <stdlib.h>
// 比较函数,用于将数组从小到大排序
int cmp(const void *a, const void *b) {
return (*(int*)a) - (*(int*)b);
}
int main() {
int income[7];
printf("请输入7个人的月收入:");
for (int i = 0; i < 7; i++) {
scanf("%d", &income[i]);
}
// 使用标准库函数 qsort 将数组从小到大排序
qsort(income, 7, sizeof(int), cmp);
// 计算中位数
int median;
if (7 % 2 == 0) {
median = (income[3] + income[4]) / 2;
} else {
median = income[3];
}
printf("这7个人的收入中位数为:%d\n", median);
return 0;
}
```
程序中使用整型数组 `income` 存储输入的7个正整数,使用标准库函数 `qsort` 将数组从小到大排序。根据中位数的定义,如果数组的长度是奇数,则中位数为数组中间的数;如果数组的长度是偶数,则中位数为中间两个数的平均值。程序使用变量 `median` 存储计算得到的中位数,并使用函数 `printf` 输出结果。
需要注意的是,标准库函数 `qsort` 的第一个参数为待排序的数组的首地址,第二个参数为数组的长度,第三个参数为每个元素的大小,第四个参数为比较函数的指针。比较函数的参数为两个待比较的元素的指针,返回值为负数、零或正数,表示第一个元素小于、等于或大于第二个元素。在本程序中,比较函数 `cmp` 的返回值为两个元素的差值,用于将数组从小到大排序。
阅读全文
相关推荐










