輸入:整數個數n,n個有序(從小到大或從大到小)整數
輸出:從大到小輸出最大數,中位數,最小數。中位數如果是小數要求四捨五入保留一位小數,如果是整數直接輸出
AC代碼:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
long n,min,max;
double mid;
cin>>n;
double a[n];
for(long i=0;i<n;i++)cin>>a[i];
//從小到大排序
if(a[0]<a[n-1]){
min = a[0],max=a[n-1];
}
//從大到小排序
else if(a[0]>=a[n-1]){
max = a[0],min=a[n-1];
}
//總數是偶數,中位數=/2
if(n%2==0){
mid = (a[(n/2)-1]+ a[n/2])/2;
}
//奇數個,中位數最中間
else{
mid = a[n/2];
}
if((int)mid!=mid&&int((mid+0.05)*10.0)!=int(mid*10.0)){ //四捨五入保留一位小數
if(mid>=0)
mid=((int)((mid+0.05)*10.0))/10.0;
else if(mid<0)
mid=((int)((mid-0.05)*10.0))/10.0;
}
cout<<max<<" ";
if((int)mid!=mid)
cout<<fixed<<setprecision(1)<<mid; //輸出格式保留一位小數
else if((int)mid == mid)
cout<<(int)mid;
cout<<" "<<min;
return 0;
}
注意事項(主要注意中位數):
1.中位數判斷是否爲整數,如果是整數強制轉爲int整型輸出。
2.四捨五入保留1位小數方法:(double型數據a)
//五入
if(int((a+0.05)*10.0)!=int(a*10.0)){
a=((a+0.05)*10.0)/10/0;
}
//四舍
else{
a=(a*10.0)/10.0;
}
cout<<fixed<<setpresition(1)<<a;
注意要得到小數結果,式子中參與運算的數據一定要有小數。
全是整型數據得到的結果爲整型。
int a = 3,b = 2;
doule result = a/b;
則result = 1;
double result = a/b*1.0;
則result = 1.5