碼雲地址:https://gitee.com/hlxwzyyyyzyq/events
-
7-4 交換最小值和最大值 (9 分)
本題要求編寫程序,先將輸入的一系列整數中的最小值與第一個數交換,然后將最大值與最后一個數交換,最后輸出交換后的序列。
注意:題目保證最大和最小值都是唯一的。
輸入格式:
輸入在第一行中給出一個正整數N(≤10),第二行給出N個整數,數字間以空格分隔。
輸出格式:
在一行中順序輸出交換后的序列,每個整數后跟一個空格。
輸入樣例:
5 8 2 5 1 4輸出樣例:
1 2 5 4 8
程序設計思路:通過交換下角標的方法實現交換最大值和最小值,先通過循環比較,符合條件后,找到最大值和最小值的下角標,然后交換即可。
代碼如下:import java.util.Scanner; public class Main{ public static void main(String []args){ int min,max; int a[]; Scanner k=new Scanner(System.in); int n=k.nextInt(); a=new int[n]; for(int i=0;i<n;i++){ a[i]=k.nextInt(); } max=0; min=0; for(int i=1;i<n;i++){ if(a[i]>a[max]){ max=i; } } int c=a[max]; a[max]=a[n-1]; a[n-1]=c; for(int i=1;i<n;i++){ if(a[i]<a[min]){ min=i; } } int b=a[min]; a[min]=a[0]; a[0]=b; for(int i=0;i<n;i++){ System.out.print(a[i]+" "); } } }運行結果:

7-1 簡化的插入排序 (8 分)
本題要求編寫程序,將一個給定的整數插到原本有序的整數序列中,使結果序列仍然有序。
輸入格式:
輸入在第一行先給出非負整數N(<10);第二行給出N個從小到大排好順序的整數;第三行給出一個整數X。
輸出格式:
在一行內輸出將X插入后仍然從小到大有序的整數序列,每個數字后面有一個空格。
輸入樣例:
5 1 2 4 5 7 3輸出樣例:
1 2 3 4 5 7
程序設計思路:插入數后,原序列長度加1,讓插入的數,與原序列數一一進行比較,選好插入的位置。
代碼如下:import java.util.*; public class Main{ public static void main(String[] args){ Scanner read=new Scanner(System.in); int n=read.nextInt(); int a[]=new int[n+1]; int i; for(i=0;i<n;i++){ a[i]=read.nextInt(); } a[n]=read.nextInt(); Arrays.sort(a); for(i=0;i<=n;i++){ System.out.print(a[i]+" "); } } }運行結果:

7-2 IP地址轉換 (12 分)
一個IP地址是用四個字節(每個字節8個位)的二進制碼組成。請將32位二進制碼表示的IP地址轉換為十進制格式表示的IP地址輸出。
輸入格式:
輸入在一行中給出32位二進制字符串。
輸出格式:
在一行中輸出十進制格式的IP地址,其由4個十進制數組成(分別對應4個8位的二進制數),中間用“.”分隔開。
輸入樣例:
11001100100101000001010101110010輸出樣例:
204.148.21.114
程序設計思路:考試時,沒做出來。進制轉換平時會做,但無法用代碼實現,請教了同學,用了轉換的新語法
代碼如下:import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String n = in.nextLine(); int n1 = Integer.parseInt(n.substring(0, 8),2); int n2 = Integer.parseInt(n.substring(8, 16),2); int n3 = Integer.parseInt(n.substring(16, 24),2); int n4 = Integer.parseInt(n.substring(24, 32),2); System.out.printf("%d.%d.%d.%d", n1,n2,n3,n4); } }運行結果:

7-5 說反話-加強版 (20 分)
給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。
輸入格式:
測試輸入包含一個測試用例,在一行內給出總長度不超過500 000的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用若干個空格分開。
輸出格式:
每個測試用例的輸出占一行,輸出倒序后的句子,並且保證單詞間只有1個空格。
輸入樣例:
Hello World Here I Come輸出樣例:
Come I Here World Hello
程序設計思路:這道題一直運行超時,與同學探討解決方法后,仍未解決。
代碼如下:import java.io.IOException; import java.text.ParseException; import java.util.Scanner; public class Main { public static void main(String[] args) throws ParseException, IOException { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine().trim(); String[] strs = str.split(" +"); for(int i=strs.length-1;i>=0;--i) { System.out.print(strs[i]); if(i!=0) System.out.print(" "); } } }階段性總結:編程沒有想象的簡單,需要高思維運轉,學習態度有待提高
學習內容 代碼行數 博客字數 第一次考核 314 325 第二次考核 215 163 第三次考核 246 362 數組,字符串 243 354

