1. 程式人生 > >第三次過程性考核——常用實用類

第三次過程性考核——常用實用類

第三次考核碼雲連結:https://gitee.com/QM0829/exam

課堂練習碼雲連結:https://gitee.com/QM0829/test

7-1 簡化的插入排序 

本題要求編寫程式,將一個給定的整數插到原本有序的整數序列中,使結果序列仍然有序。

輸入格式:

輸入在第一行先給出非負整數N(<10);第二行給出N個從小到大排好順序的整數;第三行給出一個整數X。

輸出格式:

在一行內輸出將X插入後仍然從小到大有序的整數序列,每個數字後面有一個空格。

 1 import java.util.*;
2 public class Main{ 3 public static void main(String[] args){ 4 Scanner read=new Scanner(System.in); 5 int n=read.nextInt(); 6 int a[]=new int[n+1]; 7 int i; 8 for(i=0;i<n;i++){ 9 a[i]=read.nextInt(); 10 } 11 a[n]=read.nextInt();
12 Arrays.sort(a); 13 for(i=0;i<=n;i++){ 14 System.out.print(a[i]+" "); 15 } 16 } 17 }
7-2 IP地址轉換 

一個IP地址是用四個位元組(每個位元組8個位)的二進位制碼組成。請將32位二進位制碼錶示的IP地址轉換為十進位制格式表示的IP地址輸出。

輸入格式:

輸入在一行中給出32位二進位制字串。

輸出格式:

在一行中輸出十進位制格式的IP地址,其由4個十進位制陣列成(分別對應4個8位的二進位制數),中間用“.”分隔開。

 1 import java.util.*;
 2 public class Main{
 3     public static void main(String[] args){
 4         Scanner read=new Scanner(System.in);
 5         String n=read.nextLine();
 6         String a=n.substring(0,8);
 7         String b=n.substring(8,16);
 8         String c=n.substring(16,24);
 9         String d=n.substring(24,32);
10         int a1=Integer.parseInt(a,2);
11         int b1=Integer.parseInt(b,2);
12         int c1=Integer.parseInt(c,2);
13         int d1=Integer.parseInt(d,2);
14         System.out.print(a1+"."+b1+"."+c1+"."+d1);
15     }
16 }
7-4 交換最小值和最大值

本題要求編寫程式,先將輸入的一系列整數中的最小值與第一個數交換,然後將最大值與最後一個數交換,最後輸出交換後的序列。

注意:題目保證最大和最小值都是唯一的。

輸入格式:

輸入在第一行中給出一個正整數N(≤10),第二行給出N個整數,數字間以空格分隔。

輸出格式:

在一行中順序輸出交換後的序列,每個整數後跟一個空格。

 1 import java.util.*;
 2 public class Main{
 3     public static void main(String[] args){
 4         Scanner read=new Scanner(System.in);
 5         int n=read.nextInt();
 6         int a[]=new int[n];
 7         int i;
 8         for(i=0;i<n;i++){
 9             a[i]=read.nextInt();
10         }
11         int max=0;
12         int min=0;
13         for(i=1;i<n;i++){
14             max=(a[i]>a[max])?i:max;
15             min=(a[i]<a[min])?i:min;
16         }
17         int change;
18         change=a[0];
19         a[0]=a[min];
20         a[min]=change;
21         if(max==0){
22             max=min;
23         }
24         change=a[n-1];
25         a[n-1]=a[max];
26         a[max]=change;
27         for(i=0;i<n;i++){
28             System.out.print(a[i]+" ");
29         }
30     }
31 }
7-5 說反話-加強版

給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。

輸入格式:

測試輸入包含一個測試用例,在一行內給出總長度不超過500 000的字串。字串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字串,單詞之間用若干個空格分開。

輸出格式:

每個測試用例的輸出佔一行,輸出倒序後的句子,並且保證單詞間只有1個空格。

程式碼:

 1 import java.util.Scanner;  
 2 public class Main {  
 3   public static void main(String[] args) {  
 4     Scanner scanner = new Scanner(System.in);  
 5     String str = scanner.nextLine().trim();  
 6     String[] strs = str.split(" +");  
 7     for(int i=strs.length-1;i>=0;--i)  
 8     {  
 9 
10         System.out.print(strs[i]);  
11         if(i!=0)  
12           System.out.print(" ");
13     }  
14 
15   }  
16 }