1 /*35 【程序 35 最大最小交换】
2 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
3 */
4
5 /*分析
6 * 1、先初始化一个数组,然后从键盘获得值(用for循环赋值)
7 * 2、声明一个max来存储数组第一个元素并在找到数组中最大的值时交换,同理,再声明一个min
8 * 3、输出数组
9 * */
10
11 package homework;
12
13 import java.util.Scanner;
14
15 public class _35 {
16
17 public static void main(String[] args) {
18 System.out.println("请输入5个整数,并以空格间隔:");
19 // 从键盘得到一个数组(12 8 66 32 45)
20 int a[]=new int[5];
21 Scanner sc=new Scanner(System.in);
22 for (int i = 0; i < a.length; i++) {
23 a[i]=sc.nextInt(); //赋值给数组
24 }
25 //输出数组,检验是否赋值正确
26 System.out.print("数组初值为:");
27 for (int i = 0; i < a.length; i++) {
28 System.out.print(a[i]+" ");
29 }
30 System.out.println(); //换行
31 //声明一个max来存储数组第一个元素并在找到数组中更大的值时交换,同理,再声明一个min;
32 int max=a[0], min=a[a.length-1];
33 //再声明k记录最大值的位置,q记录最小值的位置
34 int k=0,q=(a.length-1);
35 for (int i = 0; i < a.length; i++) {
36 if(a[i]>max) {
37 max=a[i]; //找到最大的值是多少
38 k=i; //找到最大值的位置
39 }
40 }
41 for (int i = 0; i < a.length; i++) {
42 if(a[i]<min) {
43 min=a[i]; //找到最小的值是多少
44 q=i; //找到最小值的位置
45 }
46 }
47
48 // System.out.println(k+" "+a[k]+" "+q+" "+a[q]); //测试
49
50 //交换最大值到a[0],最小值到a[a.lengh-1];
51 a[k]=a[0]; a[0]=max;
52 a[q]=a[a.length-1];a[a.length-1]=min;
53 //输出换序后的数组
54 System.out.print("数组换序后为:");
55 for (int i = 0; i < a.length; i++) {
56 System.out.print(a[i]+" ");
57 }
58 }
59
60 }