csp题目 2019-03-01(大中小)

解答(java)
在下面有可复制的代码

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入一个整数n
int n = scanner.nextInt();
// 循环输入数组中的数
int[] arr = new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt();
}
// 判断升序降序
if(arr[0] < arr[arr.length - 1]){
// > 如果为升序,则最大的数为最后一个
cal(arr, true);
} else {
// > 如果为降序,则最大的数为第一个
cal(arr, false);
}
}
public static void cal(int[] arr ,boolean flag){
if(flag){
// 升序
System.out.print(arr[arr.length - 1] + " ");
}else {
// 降序
System.out.print(arr[0] + " ");
}
if(arr.length % 2 == 0){
// 长度为偶数的情况
if(arr[arr.length / 2] % 2 == 0 && (arr[arr.length / 2 - 1] ) % 2== 0 || (arr[arr.length / 2] % 2 != 0 && (arr[arr.length / 2 - 1] ) % 2 != 0)){
// 结果为整数的情况
int result = (arr[arr.length / 2] + arr[arr.length / 2 - 1] ) / 2;
System.out.print(result + " ");
}else {
// 结果为小数的情况
System.out.printf("%.1f ", (((float)arr[arr.length / 2] + (float)arr[arr.length / 2 - 1] ) / 2));
}
}else {
// 长度为奇数的情况
System.out.print(arr[arr.length / 2] + " ");
}
if(flag){
// 升序
System.out.println(arr[0]);
} else {
// 降序
System.out.println(arr[arr.length - 1]);
}
}
}