#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