题目

给出一个班级所有同学的成绩,请求出采用平均数和中位数作为班级成绩的差异。差异指的是两者差值的绝对值。
班级有 n 个同学,每个同学的成绩为 [0,100] 范围内的其中一个整数。成绩按照从小到大的顺序排列。

解题思路

成绩平均值:n 个同学的成绩之和除以 n。
成绩中位值:如果 n 是奇数,取中间的那个同学的成绩;如果 n 是偶数,取中间的两个同学成绩的平均值。

C++代码

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int n;
    cin >> n;
    double sum = 0;
    vector<int> score(n);
    for(int i=0; i<n; ++i){
        cin >> score[i];
        sum += score[i];
    }
    double aver = sum / n;
    double mid = 0;
    if(n%2)
        mid = score[n/2];
    else
        mid = (score[n/2-1]+score[n/2]) * 0.5;
    int d = aver - mid;
    if(d < 0)
        d = -d;
    cout << d << endl;
    return 0;
}