時間限制:0.1s
空間限制:512.0MB``
#include<stdio.h>
int main()
{
int n,max,min,mid,midd,i;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{scanf("%d",&a[i]);} //輸入
if(a[0]>=a[n-1])
{
max=a[0];
min=a[n-1];
}
else
{
max=a[n-1];
min=a[0];
} //判斷升序降序
if(n%2!=0)
{
mid=a[(n-1)/2];
printf("%d %d %d",max,mid,min);
} //n爲奇數,中位數是數列中間的數
else
{
n=n/2;
midd=a[n-1]+a[n];
if(midd%2!=0)
{
double t=0;
if(midd>0)
{
t=midd/2+0.5;
}
if(midd<0)
{
t=midd/2-0.5; *注意"/"是整除,沒有小數部分,根據正負處理不同
} //n爲偶數,且中位數是個分數
printf("%d %.1f %d",max,t,min);
}
else
{
mid=midd/2;
printf("%d %d %d",max,mid,min);
} //n爲偶數,中位數是個整數
}
return 0;
}
本題重點是求中位數,大體分爲兩種情況:一,n爲奇數,則中位數是數列的中間項(n-1)/2,直接輸出;二,n爲偶數,中位數是數列中間兩項的和的1/2,此時又分爲兩種情況,一種中間兩項和是偶數,即可以整除2,中位數是整數;另一種是中間兩項和爲奇數,中位數是個分數,這個時候要對中位數進行一些處理,讓它以浮點類型輸出。