本文主要是介绍求N个整数的平均数、众数和中位数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
求 NN 个整数的平均数,众数和中位数。
小知识:
1. 众数
如有 99个数:17,13,17,99,17,17,33,16,17,其中 17 出现的次数最多,即为这组数的众数。 (本题确保测试数据中,出现次数最多的数只有一个)
2. 中位数
如有 99个数:102,170,96,90,97,106,110,182,100。
将这 99个数按一定的顺序(从大到小或从小到大)排列后得到:182182,170170,110110,106106,102102,100100,9797,9696,9090。正中间的一个数是 102102 , 102102 是这组数的中位数。
而这 10个数:106106,9999,104104,120120,107107,112112,3333,102102,9797,100100。
按一定顺序排列后得到:120120,112112,107107,106106,104104,102102,100100,9999,9797,3333。
正中间有两个数:104104,102102 ,中位数就是这两个数的平均数,即 (104+102)/2=103.0(104+102)/2=103.0 。
输入
第一行为整数 N( 5≤N≤10000 );
第二行为空格隔开的 N 个数 AiAi ( 1000≤Ai≤100)。
输出
输出空格隔开的平均数 众数 中位数(平均数保留两位小数,中位数保留一位小数)。
样例
输入
复制
6 5 2 2 3 4 6
输出
复制
3.67 2 3.5
#include<bits/stdc++.h>
using namespace std;
int main(){int a[10005]={0},b[105]={0};int m=0,n=0,c=0,s=0,k=0;double f,t;cin>>n;for(int i=0;i<n;i++){cin>>a[i];s=s+a[i];b[a[i]]++;}m=b[0];k=0;for(int i=1;i<=100;i++){if(b[i]>m){m=b[i];k=i;}sort(a,a+n);if(n%2==0){t=(a[n/2]+a[n/2-1])/2.0;}else{t=a[n/2];}}f=s*1.0/n;printf("%.2f %d %.1f",f,k,t);return 0;
}
这篇关于求N个整数的平均数、众数和中位数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!