解题思路:
由于题目中的序列为有序序列,因此只需判断序列的升序或降序即可确定最大的数与最小的数以及中位数。另外,由于序列为整数序列,所以不会出现两位小数及以上的情况,故四舍五入无需考虑。本题最大的难点应该是对于中位数数据类型的把握,若中位数非整数,则使用float类型,以保留一位小数。若为整数则使用int类型,只保留整数部分。
测试案例供复制:
3
-1 2 4
4
-2 -1 3 4
代码:
package minMidMax;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] data = new int[n];
int max;
int min;
for (int i = 0; i < n; i++) {
data[i] = sc.nextInt();
}
if (data[0] >= data[n - 1]) {//判断升序或降序来确定最大最小值
max = data[0];
min = data[n - 1];
} else {
min = data[0];
max = data[n - 1];
}
if ((n % 2) == 0) {//偶数
int sum = data[n / 2] + data[n / 2 - 1];
if (sum % 2 == 0)//可整除
System.out.println(max + " " + sum / 2 + " " + min);
else//不可整除
System.out.println(max + " " + (float) sum / 2 + " " + min);
} else {//奇数
int mid = data[n / 2];
System.out.println(max + " " + mid + " " + min);
}
}
}