CCF CSP 201903-1 小中大

#include <iostream>
#include <iomanip>
#include <stdio.h>
using namespace std;
int main() {
    int N;
    cin >> N;
    long* arr = new long[N];
    for (int i = 0; i < N; i++) {
        cin >> arr[i];
    }

    long max = arr[0], min = arr[N-1];
    if(max < min) swap(max, min);

    if(N == 1) cout << arr[0] << " " << arr[0] << " " << arr[0];
    float mid;
    if(N%2) mid = arr[N/2];
    else {
        mid = (arr[N/2-1] + arr[N/2])/2.0;
    }
    //cout << mid-int(mid) << endl;
    cout << max << " ";
    cout << setiosflags(ios::fixed) << setprecision(mid-(int)mid < 0.01?0:1) << mid << " ";
    cout << min << endl;
    return 0;
}

学习到的知识:

1、注意极端情况,比如只有一个数

2、做除法时除数一定要是带小数点的,如果除的是int,会“收敛”到整数,那样就没有小数了!!!!!

3、如何取小数点:

num-(int)num	

4、如何设置输出格式:

cout << setiosflag(ios::fixed) << setprecision(2) << mid << " ";//小数点后两位

5、一定要读题!!!

  • ​ 没有注意到题目本身就有“升序或降序”,这么说明不需要排序

  • 还是本身就有“升序或降序”,这么说如果大小颠倒需要swap

原文地址:https://www.cnblogs.com/huangming-zzz/p/11365846.html