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会被隐式转换。
通过测试