1180: 【入门】求N个整数的平均数、众数和中位数

题目:

1180: 【入门】求N个整数的平均数、众数和中位数

时间限制: 1.000 Sec  内存限制: 16 MB
提交: 9289  解决: 3041
[命题人:][下载数据: 70]

提交状态报告

题目描述

求N个整数的平均数,众数和中位数。 

小知识: 

1、众数

如有9个数:17 13 17 9 17 17 3 16 17

17出现的次数最多,即为这组数的众数。 

2、中位数。

分两种情况。

①数字个数为奇数

例如这9个数:102 170 96 90 97 106 110 182 100

将这9个数按一定的顺序(从大到小或从小到大)排列后得到:

182 170 110 106 102 100 97 96 90  

正中间的一个数是102,102是这组数的中位数。

②数字个数为偶数。

例如这10个数:106 99 104 120 107 112 33 102 97 100

按一定顺序排列后得到:120 112 107 106 104 102 100 99 97 33

正中间有两个数:104 102。

这两个数的平均数,即(104+102)/ 2 = 103,就是中位数。。

输入

第一行为整数N(5 <= N <= 10000 ) 

第二行为空格隔开的N个数Ai(0 <= Ai <= 100 )

输出

输出空格隔开的三个数:平均数、众数、中位数(平均数保留两位小数,中位数保留一位小数)。

样例

输入  复制

6

5 2 2 3 4 6

输出  复制

3.67 2 3.5

提示

出现次数最多的数有且只有一个。

代码区:

#include<bits/stdc++.h>
using namespace std;
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n,i,j,s=0,k,x=0,m=0;
    cin>>n;
    int a[n+1],b[10000];
    for(i=1; i<=n; i++) {
        cin>>a[i];
    }
    for(i=1; i<=n; i++) {
        for(j=1; j<n-i+1; j++) {
            if(a[j]<a[j+1]) {
                swap(a[j],a[j+1]);
            }
        }
    }
    for(i=1; i<=n; i++) {
        x=x+a[i];
    }
    cout<<fixed<<setprecision(2)<<x*1.0/n<<' ';
    b[1]=1;
    for(i=2; i<=n; i++) {
        if(a[i]==a[i-1]) {
            k++;
        } else {
            k=1;
        }
        if(k>s) {
            s=k;
        }
        b[i]=k;
    }
    for(i=1; i<=n; i++) {
        if(b[i]==s) {
            cout<<a[i]<<' ';
        }
    }
    if(n%2==0) {
        m=a[n/2]+a[n/2+1];
        cout<<fixed<<setprecision(1)<<m*1.0/2<<endl;
    } else {
        cout<<fixed<<setprecision(1)<<a[(n+1)/2]*1.0<<endl;
    }
    return 0;
}
 

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值