输入数据
第一行为一个整数 t (1≤t≤100)t (1≤t≤100),表示数据的组数。接下来对于每组数据:
第一行为一个整数 n (1≤n≤500)n (1≤n≤500),表示参加考试的人数。
第二行有 nn 个整数 a1,a2,…an (0≤ai≤100)a1,a2,…an (0≤ai≤100),表示每个人的成绩。
输出数据
对于每组数据,输出一行:
第一行为一个实数,表示这门科目的成绩得分中位数(保留一位小数)。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
const int MAX = 100;
int main() {
ios::sync_with_stdio(false); cin.tie(0);
int num,n,newNum; vector<int> a[MAX];
cin >> num;//输入数据组数
for (int i = 0; i < num; i++){//第i组数据
cin >> n;//输入分数的个数
for (int j = 0; j < n; j++) {
cin >> newNum;
a[i].push_back(newNum);//第一次写的时候这里用的a[j].push_back(),怕是蠢到家了。
if (j + 1 == n)//循环要搞清楚i和j分别代表的意义是什么
sort(a[i].begin(), a[i].end());//排序
}
if (n % 2 == 1) //如果是奇数
printf("%.1f\n", (float)a[i].at(n / 2));
/*cout << (float)a[i].at(n / 2)<< endl;*/
else {//printf函数中不涉及自动转换
printf("%.1f\n", (float)(a[i].at(n / 2 - 1) + a[i].at(n / 2)) / 2);//后面数据要先转化为float,不然前后格式不对
/*cout << (float)(a[i].at(n / 2 - 1) + a[i].at(n / 2)) / 2 << endl;*/
//用cout输出无法保留一位小数
}
}
return 0;
}
版权声明:本文为gulaixiangjuejue原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。