CSP-201903-1-小中大
【坑!】
- 注意中位数的输出,当中位数为整数时不保留小数点。
- 当两个整数相加后再除以 2 时,结果会自动向下取整,而不是得到一个准确的浮点数结果。需要确保至少有一个操作数是浮点数类型,以便执行浮点数除法,即将
median = (arr[n / 2] + arr[n / 2 - 1]) / 2
修改为median = (arr[n / 2] + arr[n / 2 - 1]) / 2.0
。
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int main()
{int n;cin >> n;int* arr = new int[n];for (int i = 0; i < n; i++){cin >> arr[i];}sort(arr, arr + n);// n为偶函数if (n % 2 == 0){// 结果为小数if ((arr[n / 2] + arr[n / 2 - 1]) % 2 != 0){double median = (arr[n / 2] + arr[n / 2 - 1]) / 2.0;cout << arr[n - 1] << " " << fixed << setprecision(1) << median << " " << arr[0];}// 结果为整数else{int median = (arr[n / 2] + arr[n / 2 - 1]) / 2;cout << arr[n - 1] << " " << median << " " << arr[0];}}// n为奇数else{int median = arr[n / 2];cout << arr[n - 1] << " " << median << " " << arr[0];}return 0;
}