题目描述:
求的平均数(Mean)、中位数(Median)、众数(Mode)。中位数指的是排列在数组中间的数。如果原始数据的个数是偶数,那么中位数等于中间那两个元素的算术平均值(结果为整数)。众数是数组中出现次数最多的那个数(不考虑两个或两个以上出现次数相同的情况)。
输入格式:
40个数。
输出格式:
有3行,每一行1个数,分别用来表示平均数、中位数和众数。
样例输入:
5 7 9 8 7 6 8 9 10 7
9 5 8 10 9 6 8 5 9 7
6 10 5 9 8 9 7 7 9 8
6 9 9 9 8 8 7 9 5 6
样例输出:
7
8
9
提示:
每个数的范围在[0,10]
三个答案都是整数。
时间限制: 1000ms
空间限制: 2MB
题解:本题题目考察排序算法;
平均数是指这些数的平均值,用总和除以总个数即可
中位数是从小到大排序后最中间的哪个,用sort排序即可。
众数是出现最多的数,可以用桶排序的思想
代码如下:
注意:copy不是种好习惯!
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[42]={},s=0,b[42]={};
for(int i=0;i<40;i++){
cin>>a[i];
s+=a[i];//计算总和
b[a[i]]++;//用桶排序求众数
}
sort(a,a+40);//从小到大排序
cout<<s/40<<endl<<a[20]<<endl;//输出平均数和中位数
int max=0,c;
for(int i=0;i<=10;i++){//找到众数
if(b[i]>max){
max=b[i];
c=i;
}
}
cout<<c;
return 0;
}