大中小
题目
参考代码
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n,k;
int max,min;
double mid;
cin>>n;
int *arr = new int [n];
for (int i=0;i<n;i++){
cin>>arr[i];
}
if(arr[0]>arr[n-1]){
max = arr[0];
min = arr[n-1];
}
else{
max = arr[n-1];
min = arr[0];
}
if(n%2==0){
k = n/2;
mid = (arr[k]+arr[k-1])*1.0/2;
}else{
k = n/2;
mid = arr[k];
}
cout.setf(ios::fixed,ios::floatfield);//十进制计数法,不是科学计数法
cout<<max<<" ";
if(mid-(int)mid == 0)//判断mid是否为整数
cout<<(int)mid<<" ";
else
cout<<setprecision(1)<<mid<<" ";
cout<<min<<endl;
}
/*
测试用例:
3
-1 2 4
4
-2 -1 4 4
*/
【注意及总结】
1、下面这一段是防止数字太大,double类型会自动使用科学计数法(如:1.5E6等)输出,不满足题目格式,亲测没有这个格式控制会扣15分;
cout.setf(ios::fixed,ios::floatfield);//十进制计数法,不是科学计数法
2、下面这一段是保证中位数四舍五入保留一位小数
if(mid-(int)mid == 0)//判断mid是否为整数
cout<<(int)mid<<" ";
else
cout<<setprecision(1)<<mid<<" ";
3、就是注意输入的数据都是定义为int类型,但是中位数定义为double类型。