「csp模擬試題 201903-1」小中大 C/C++ 100分
阿新 • • 發佈:2020-12-12
目錄
題目
輸入輸出樣例
題解思路
題解原始碼(c/c++)
題目 :小中大
【問題描述】
老師給了你 n 個整陣列成的測量資料,保證有序(可能為升序或降序),可能存在重複的資料。請統計出這組測量資料中的最大值、中位數以及最小值,並按照從大到小.的順序輸出這三個數。.
【輸入格式】
從標準輸入讀入資料。
第一行輸入一個整數 n,在第二行中存在 n 個有序的整數,表示測量資料,可能為升序或降序排列,可能存在連續多個整數相等,整數與整數之間使用空格隔開。
【輸出格式】
輸出到標準輸出。
包含一行,包括最大值、中位數以及最小值共三個數,並按照從大到小的順序輸出。資料與資料之間使用空格隔開。對於整數請直接輸出整數,對於可能出現的分數, 請輸出四捨五入保留 1 位小數的結果。
輸入輸出樣例
輸入樣例1
3
-1 2 4
輸出樣例1
4 2 -1
樣例 1 解釋
4 為最大值,2 為中位數,-1 為最小值。
輸入樣例2
4
-2 -1 3 4
輸出樣例2
4 1 -2
樣例 2 解釋
4 為最大值,(-1+3)÷2=為中位數,-2 為最小值。
【子任務】
題解思路
水題,直接判斷即可。注意中位數的求法即可。中位數可能為整數或一位的小數。
題解(c/c++)
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
int max,min;
int a[n+1];
for (int i=0;i<n;i++){
cin>>a[i];
}
max=a[0]>a[n-1]? a[0]:a[n-1];
min=a[0]>a[n-1]? a[n-1]:a[0];
cout<<max<<" ";
if(n%2){
cout<<a[n/2]<<" ";
}
else {
if(a[n/2-1]%2==a[ n/2]%2){
cout<<(a[n/2-1]+a[n/2])/2<<" ";
}
else {
cout<<(double)(a[n/2-1]+a[n/2])/2<<" ";
}
}
cout<<min;
return 0;
}