代码改变世界

第三次过程性考核——常用实用类

2018-11-03 19:30  QM!  阅读(429)  评论(0编辑  收藏  举报
第三次考核码云链接: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 }