1 /*35 【程序 35 最大最小交換】 2 題目:輸入數組,最大的與第一個元素交換,最小的與最後一個元素交換,輸出數組。 3 */ 4 5 /*分析 6 * 一、先初始化一個數組,而後從鍵盤得到值(用for循環賦值) 7 * 二、聲明一個max來存儲數組第一個元素並在找到數組中最大的值時交換,同理,再聲明一個min 8 * 三、輸出數組 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 }