问题
csp 小中大的问题 提交了很多遍 做了很多修改 总是 80 90
后来知道了原来是 中位数 精度的问题
思路
当n为偶数时 求出的中位数 如果有小数 则以保留一位的小数形式输出
如果没有小数 则以整型的形式输出
由于两个数的和 除以二 如果有小数肯定是 “.5”所以也可以以如下方式输出
cout <<mid<<".5";
下面的代码用的是 保留一位小数的形式输出的
代码
//小中大
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n; cin >> n;
int *a = new int[n];
for (int i = 0; i < n; i++){
cin >> a[i];
}
int max,min;
if (a[0] >= a[n - 1]){
max = a[0];
min = a[n - 1];
}
else{
max = a[n - 1];
min = a[0];
}
double mid;
if (n % 2 == 0){
mid = (a[n / 2] + a[n / 2 - 1]) / 2.0;
if (mid == (int)mid){
cout << max << " " << (int)mid << " " << min << endl;
}
else{
cout << max << " ";
cout << fixed << setprecision(1) << mid;
cout << " " << min << endl;
}
}
else{
cout << max << " " << a[n/2] << " " << min;
}
//system("pause");
return 0;
}