CCF-CSP 小中大 C語言

時間限制:0.1s
空間限制:512.0MB``201903-1

#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,中位數是整數;另一種是中間兩項和爲奇數,中位數是個分數,這個時候要對中位數進行一些處理,讓它以浮點類型輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章