本以为这是一个很简单的问题,可是分数总是在五十和八十之间徘徊,最终发现是setprecision()的函数没有用对!
tip:setprecision()只是对函数取有效值而不可以精确到小数点,只有在前面加上fixed才可以对其后面的值进行四舍五入。
eg:cout << fixed << setprecision(1) << 3.1415; //最后的输出结果为3.1
附上这道题的代码(满分):
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int num[100005];
int main()
{
int n;
cin >> n;
for(int i=0; i<n; i++){
cin >> num[i];
}
sort(num,num+n);
int mid=n/2;
if(n%2==0)
{
if((num[mid]+num[mid-1])%2==0){
int median = (num[mid]+num[mid-1])/2;
cout << num[n-1] << " " << median << " " << num[0];
}
else {
double median = (double)(num[mid]+num[mid-1])/2;
cout << num[n-1] << " " << fixed << setprecision(1) <<median << " " << num[0];
}
}
else {
cout << num[n-1] << " "<< num[mid] <<" " << num[0];
}
return 0;
}