题目
给出一个班级所有同学的成绩,请求出采用平均数和中位数作为班级成绩的差异。差异指的是两者差值的绝对值。
班级有 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; }