思路:题目是不难的,就是寻找一组数据的最大值,最小值和中位数,需要注意的是在找中位数时要注意是否需要保留小数,这里用到fixed<<setprecision(n)函数表示保留到小数点后n位。还有就是再求最大值最小值时最好初始化第一个数为数组的第一个数,不然边界开的太小会边界错误,(一直95分就是因为最大值的边界不达标,后续改了就好了),还有就是当一个数据类型是float型时,他运算的式子所有都要是float型,防止出错。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
int arr[100005];
int main(){
cin>>n;
int minnum=1<<30;
float midnum;
int sum=0;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
int maxnum=arr[1];
for(int i=1;i<=n;i++){
maxnum=max(maxnum,arr[i]);
minnum=min(minnum,arr[i]);
}
cout<<maxnum<<" ";
if((n%2)!=0){
cout<<arr[(n/2)+1];//当是奇数时输出整数
}
else if((n%2)==0){
sum=(arr[n/2]+arr[(n/2)+1]);
if((sum%2)==0){
cout<<(sum/2);
}
else{
midnum=(float)sum/float(2);
cout<<fixed<<setprecision(1)<<midnum ;
}
}
cout<<" "<<minnum;
}