1. 程式人生 > 實用技巧 >CSP試題201903-1小中大(C++實現)

CSP試題201903-1小中大(C++實現)

 1 #include <iostream>
 2 #include <iomanip>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n,i,max=0,min=0,midf=0;
 8     float mid=0;
 9     cin >> n;
10     int arr[n];
11     for(i=0;i<n;i++)
12     {
13         cin >> arr[i];
14     }
15 
16     if(arr[0] > arr[n-1
]) 17 { 18 max = arr[0]; 19 min = arr[n-1]; 20 } 21 else 22 { 23 max = arr[n-1]; 24 min = arr[0]; 25 } 26 27 if(n%2 == 0) 28 { 29 mid = (arr[(n/2)-1]+arr[n/2])/2.0; 30 midf = (int)(mid*10.0); 31 if(midf%10 == 0) 32 { 33 midf = midf/10
; 34 cout << max << " " << midf << " " << min << endl; 35 } 36 else 37 { 38 mid = midf; 39 mid = mid/10.0; 40 cout << max << " " << setiosflags(ios::fixed) 41 << setprecision(1
) << mid << " " << min << endl; 42 } 43 } 44 else 45 { 46 midf = arr[(n-1)/2]; 47 cout << max << " " << midf << " " << min << endl; 48 } 49 50 return 0; 51 }

思路很簡單,但有一些要注意的點:運用iomanip庫中的setprecision控制浮點數的輸出位數,int型別和float型別做乘除運算,int會被隱式轉換。

通過測試