骑行距离相关计算c语言
自行车骑行爱好者,在输入某一段时间的**骑行距离数据**后,可以得到骑行距离的单日最大值、最小值、平均值、中位数。
从键盘接收一个整数n,表示用户接下来要输入的骑行距离的数据个数。接下来接收用户输入的骑行距离,存入数组。之后计算单日骑行距离最大值、最小值、平局值、中位数。
**中位数**的规则是:按照从小到大排列的数据,如果数据数量为**奇数个**,则**最中间的一个数**为中位数;如果数据为**偶数个**,则**中间两个数的平均值**为中位数。
说明:假定用户输入的n一定是大于等于3并且小于等于50,即3 <= n <= 50。
### 函数接口定义:
c++
//输出数组中的最大值,最小值,平均值
void dispMaxMinAvg(double dDistance[],int n);
//对已经升序排列后的数组,返回中位数
double getMedian(double dDistance[],int n);
在这里解释接口参数。其中 dDistance 和 n 都是用户传入的参数。 dDistance 存储的是含有距离数据的一维数组; n 是数组元素的个数。
两个函数,第一个函数直接打印出结果,第二个函数是要返回一个double值。
### 裁判测试程序样例:
c++
#include <stdio.h>
#define N 50c语言数组最大值最小值
//输出数组中的最大值,最小值,平均值
void dispMaxMinAvg(double dDistance[],int n);
//对已经升序排列后的数组,返回中位数
double getMedian(double dDistance[],int n);
int main()
{
int n,i,j; //n表示输入多少个数据
double dDis[N]={0},temp;//数组最多50个元素,先初始化为0
//输入数据
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%lf",&dDis[i]);
//调用函数,打印距离的最大值,最小值,平均值
dispMaxMinAvg(dDis,n);
//在求中位数之前,对数组进行排序
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(dDis[i]>dDis[j])
{
temp=dDis[i];
dDis[i]=dDis[j];
dDis[j]=temp;
}
//对已经升序排列的数组,调用函数得到中位数
printf("Median=%.2f" ,getMedian(dDis,n) );
return 0;
}
/* 请在这里填写答案 */
### 输入格式:
第一行输入一个整数。
第二行开始输入用空格分开的多个正实数。
### 输出格式:
第一行输出最大值、最小值、平均值。
第二行输出中位数。
### 输入样例:
第一个整数8表示骑行了8天,后面的8个小数表示每天骑行的距离(千米)。
in
8
167.48 139.08 53.97 71.84 75.31 51.15 86.22 168.79
### 输出样例:
输出骑行距离的最大值,最小值,平均值。
因为总共有8个数,中位数应该是原数据从小到大排列后,中间的两个数75.31和86.22的平均值,结果为80.77。
所有的数据,都是输出**2位小数**。
out
Max=168.79,Min=51.15,Avg=101.73
Median=80.77