分析:很简单的一道题,应该快速做出来,但是里面涉及一个输入输出时的问题,就是那个中位数,如果是整数,则按照整数输出,如果是分数,则应该输出一位小数,在这里进行分类判断,利用
< camth >中的floor函数,对得到的中位数截取小数部分,如果截取部分为0,则直接输出整数,即不需要输出一位小数,代码如下。
当然有些头文件并不需要,只是做题时习惯都粘上。。
#include <iostream>
#include <cstdio>
#include <set> //自动排序, 不可重复 unordered_set
#include <sstream>
#include <string> //ar[] , string
#include <typeinfo>
#include <algorithm> //sort() cmp
#include <vector>
#include <map> //map a; a.insert(pair<,>,()) a[10]="qewe";
#include <cctype>
#include <iomanip> //cout<<setw(10)<<left
#include <queue>
#include <cmath>//printf("%.2f",a)
using namespace std;
int main()
{
int n;
cin>>n;
long long arr[100010]={0};
for(int i=0;i<n;i++){
cin>>arr[i];
}
sort(arr,arr+n); //升序
int amin=arr[0];
int amax=arr[n-1];
if(n%2==0) { //n为偶数
double d;
double d2;
d=(arr[n/2]+arr[(n-1)/2])/2.0;
d2=d-floor(d);
if(d2!=0)
printf("%d %.1f %d",amax,d,amin);
else printf("%d %d %d",amax,(int)d,amin);
}
else {
int d=arr[(n-1)/2];
cout<<amax<<" "<<d<<" "<<amin;
//printf("%d %d %d",amax,d,amin); //需要注意的是,对于double类型的数,如果占位符是%d,结果会输出0
}
return 0;
double a=2.2345;
printf("%.2f",a); //这里也可以使用< iomanip >来控制小数位数
}