第三次过程性考核

第三次过程性考核

                                                       -----常用实用类

码云地址:https://gitee.com/wrwrwrw/projects

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();          //从控制台读入整数n
    a=new int[n];               //输入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];                 //新的数插入后,数组长度加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
思路:考试的时候这题不会,虽然会进制转换,但是不会转换成java代码,是上网查阅后做出来的。
代码如下:
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        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
思路:这道题没有得上满分,一直显示运行超时,不知道怎么解决。有问了别的同学,也是参考C的方法写的,但也是运行超时。
代码如下:

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(" ");  


    }  

  }  
}

阶段性总结:电脑更新暂时安装不上java,人在兼职,所以运行结果暂时写不了。这阶段的学习和上阶段的学习相比,这阶段的学习思路比以前清晰,有想法,但代码量还是不足,所以考试时候写不完,容易出错。

学习内容 代码行数 博客字数
第一次过程性考核和练习 470 340
第二次过程性考核和练习 126 350
第三次过程性考核 82 396
数组,字符串 147 240

 

 

 
 
 
 
posted @ 2018-11-03 18:55  wrwrwr  阅读(270)  评论(1编辑  收藏  举报