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会被隐式转换。

 

 

通过测试

 

posted @ 2020-09-07 14:50  梵蒂冈宝石  阅读(169)  评论(0编辑  收藏  举报