一维数组实验题:计算平均数、中位数和众数 在调查数据分析(Survey data analysis)中经常需要计算平均数、中位数和众数。用函数编程计算40个输入数据(是取值1—10之间的任意整数)的平均数(Mean)、中位数(Median)和众数(Mode)。中位数指的是排列在数组中间的数。众数是数组中出现次数最多的那个数(不考虑两个或两个以上的输入数据出现次数相同的情况)。 提示:计算中位数时,首先要调用排序函数对数组按升序进行排序,然后取出排序后数组中间位置的元素answer[n/2] ,就得到了中位数。如果数组元素的个数是偶数,那么中位数就等于数组中间那两个元素的算术平均值。众数就是40个输入数据中出现次数最多的那个数。计算众数时,首先要统计不同取值的输入数据出现的次数,然后找出出现次数最多的那个数据,这个数据就是众数(这里没有考虑两个或者两个以上的输入数据出现次数相同的情况)。
时间: 2024-03-18 12:39:00 浏览: 116
好的,以下是代码实现:
```c
#include <stdio.h>
// 计算平均数
double Mean(int data[], int length)
{
double sum = 0;
for (int i = 0; i < length; i++)
{
sum += data[i];
}
return sum / length;
}
// 计算中位数
double Median(int data[], int length)
{
// 对数组进行升序排序
for (int i = 0; i < length - 1; i++)
{
for (int j = 0; j < length - i - 1; j++)
{
if (data[j] > data[j + 1])
{
int temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
// 取中位数
if (length % 2 == 0)
{
return (double)(data[length / 2] + data[length / 2 - 1]) / 2;
}
else
{
return data[length / 2];
}
}
// 计算众数
int Mode(int data[], int length)
{
int maxCount = 0; // 出现次数最多的数的出现次数
int mode = data[0]; // 众数
for (int i = 0; i < length; i++)
{
int count = 0;
for (int j = 0; j < length; j++)
{
if (data[j] == data[i])
{
count++;
}
}
if (count > maxCount)
{
maxCount = count;
mode = data[i];
}
}
return mode;
}
int main()
{
int data[40];
for (int i = 0; i < 40; i++)
{
while (1)
{
printf("请输入第%d个数据(1-10之间的整数):", i + 1);
scanf("%d", &data[i]);
if (data[i] >= 1 && data[i] <= 10)
{
break;
}
}
}
double mean = Mean(data, 40);
double median = Median(data, 40);
int mode = Mode(data, 40);
printf("平均数为:%.2lf\n", mean);
printf("中位数为:%.2lf\n", median);
printf("众数为:%d\n", mode);
return 0;
}
```
代码思路如下:
1. 定义 `Mean()` 函数,用于计算平均数。
2. 定义 `Median()` 函数,用于计算中位数。先对数组进行升序排序,然后根据数组元素个数的奇偶性计算中位数。
3. 定义 `Mode()` 函数,用于计算众数。统计不同取值的输入数据出现的次数,然后找出出现次数最多的那个数据,这个数据就是众数。
4. 在 `main()` 函数中,使用循环和条件判断输入40个数据,并调用 `Mean()`、`Median()` 和 `Mode()` 函数计算平均数、中位数和众数,并输出结果。
阅读全文