zoukankan      html  css  js  c++  java
  • Educoder

    第1关:数组的复制

    1、编程要求:
      在右侧编辑器Begin-End中填充代码,将arr1数组中的数据全部复制给arr2数组,最后输出arr2中所有的数据。
     
    2、测试效果:
      我会对你的程序进行测试,如下:
      测试输入:1312
      预期输出:
      1
      3
      12
      测试输入:21311
      预期输出:
      2
      13
      11
     
    3、程序设计思路:
     (1)数组的数组名中储存的实际是数组的地址值,所以不能用数组名直接复制。
     (2)采用for循环将arr1里面的元素循环赋予arr2里面的元素。
     
    4、程序实现:
    package step1;
    
    import java.util.Scanner;
    
    public class HelloWorld {
        public static void main(String[] args) {
            //动态构建arr1
            int[] arr1 = new int[3];
            Scanner sc = new Scanner(System.in);
            for(int i = 0 ; i< arr1.length ; i++){
                arr1[i] = sc.nextInt();
            }
            /********** Begin **********/
            //创建数组arr2
            int[] arr2 = new int[3];
    
            //使用for循环将arr1的数据复制给arr2
            for(int j =0 ; j<arr1.length ; j++){
               arr2[j] =arr1[j];
               System.out.println(arr2[j]);
            }
            /********** End **********/
        }
    }

    第2关:数组中元素的查找

    1、编程要求:

      在右侧编辑器Begin-end处填充代码,实现在数组中查找指定字符串位置的功能。

    2、测试效果:

      测试输入:张三

      预期输出:张三在数组的第1个位置

      测试输入:张富贵

      预期输出:张富贵在数组的第5个位置

    3、程序实现:

    package step2;
    
    import java.util.Scanner;
    
    public class HelloWorld {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            
            //str为要查找的字符串
            String str = sc.next();        
            /********** Begin **********/
            //创建数组   arr  给数组赋值 {"张三","张三丰","张无忌","王二麻子","张富贵"}
            String[] arr =new String[]{"张三","张三丰","张无忌","王二麻子","张富贵"};
            for(int i=0;i<5;i++){
                if(str.equals(arr[i])){
                    System.out.println(str+"在数组的第"+(i+1)+"个位置");
                }
            }    
            /********** End **********/
        }
    }

    4、题目总结:

     (1)变量被创建的时候就相当于在内存中开辟空间,==比较的是两个对象的内存地址,重新创建的变量与原变量内存地址不同,所以不能用==比较。

     (2)若没有进行对象创建,而是仅仅对相同类型变量进行了两次声明,两个变量内存地址相同。

       如String str = "hello"String str1 = "hello"没有进行对象的创建,而是同时指向的一个对象,所以他们的内存地址是相同的。

    第3关:交换算法

    1、编程要求:

      是时候检验一下啦,在右侧编辑器Begin-end中填充代码,完成两个变量的交换吧。

    2、测试效果:

      测试输入:35

      预期输出:

      5

      3

      测试输入:4,2

      预期输出:

      2

      4

    3、程序设计思路:

      两个变量数值的交换有三种换发:

     (1)借助中间量交换 (开发常用)  

         理解:三个杯子,两杯装水,其中一个空杯子用作容器。

    int x = 10; 
    int y = 20; 
    int z = x; 
    x = y; 
    y = z; 

     (2)位移运算交换 (面试常用)    

            理解:涉及到了异或运算符的规则:一个数对另一个数位异或两次,该数不变

    int x = 10; 
    int y = 20; 
    x = x ^ y; 
    y = x ^ y; 
    x = x ^ y;

     (3)数值相加减交换

        理解:先求得两数的和再进行减运算 

    int x = 10; 
    int y = 20; 
    x = x + y; 
    y = x - y; 
    x = x - y; 

    4、程序实现:

    package step3;
    
    import java.util.Scanner;
    
    public class HelloWorld {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int a = sc.nextInt();
            int b = sc.nextInt();
            /********** Begin **********/
            //将a的值赋给b   b的值赋给a
            int i =b;
            b=a;
            a=i;
            /********** End **********/
            System.out.println(a);
            System.out.println(b);
        }
        
    }

    第4关:选择排序

    1、编程要求:

      在右侧Begin-End区域中添加代码,实现对数组arr的降序排序,并输出排序后的arr数组。

    2、测试效果:

      我会对你的程序进行测试;

      预期输入:6650289

      预期输出:[9, 8, 6, 5, 2, 0]

      预期输入:4312113

      预期输出:[13, 12, 3, 1]

     

    3、程序设计思路:

     (1)首先思考内层循环,对数组进行降序排序,也就是要将元素按从大到小排列到数组中,首先就是想办法把最大值放到首位。

     (2)首位解决了,要循环重复第(1)步操作,值得注意的是首位不需要考虑,所以在内层循环的变量初始值要做出改变。

    4、程序实现:

    package step4;
    import java.util.Arrays;
    import java.util.Scanner;
    public class HelloWorld {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            //动态创建数组
            int[] arr = new int[sc.nextInt()];
            for(int i = 0 ; i< arr.length ; i++){
                arr[i] = sc.nextInt();
            }
            /********** Begin **********/
            for (int j = 0; j < arr.length - 1; j++) {
                for (int i = j; i < arr.length -1; i++) {
                    if(arr[j] < arr[i+1]){    
                        int temp = arr[j];
                        arr[j] = arr[i+1];
                        arr[i+1] = temp;
                    }
                }
            }
            System.out.println(Arrays.toString(arr));
            /********** End **********/
        }
    }

    5、题目总结:

     (1)对于数组的输出有更简单的方法:Arrays.toString(数组)可以直接输出数组中的值。

     (2)选择排序更优化方法思考。

    第5关:冒泡排序

    1、编程要求:

      在编辑器Begin-end处填充代码,使用冒泡排序对数组arr进行升序排序,最后输出排序之后数组arr中的数据。

    2、测试效果:

      预期输入:6958026

      预期输出:[0, 2, 5, 6, 8, 9]

      预期输入:4312130

      预期输出:[0, 3, 12, 13]

    3、程序设计思路:

      (1)将序列当中的左右元素,依次比较,如果左边的元素大于右边元素则交换位置,保证右边的元素始终大于左边的元素。

      (2) 第一轮结束后,序列最后一个元素一定是当前序列的最大值。

      (3)对序列当中剩下的n-1个元素再次执行步骤1。对于长度为n的序列,一共需要执行n-1轮比较。

    4、程序实现:

    package step5;
    import java.util.Arrays;
    import java.util.Scanner;
    public class HelloWorld {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            //动态创建数组
            int[] arr = new int[sc.nextInt()];
            for(int i = 0 ; i< arr.length ; i++){
                arr[i] = sc.nextInt();
            }
            /********** Begin **********/
            for(int j = 1 ; j< arr.length;j++){
                for (int i = 0; i < arr.length -j; i++) {
                    if(arr[i] > arr[i+1]){
                        int temp = arr[i];//交换位置
                        arr[i] = arr[i+1];
                        arr[i+1] = temp;
                    }
                }
            }
            System.out.println(Arrays.toString(arr));
            /********** End **********/
        }
    }    

     

  • 相关阅读:
    推荐有关微信开发的十个开源项目
    curl 常见错误码
    mysql修改root密码
    BAT批处理之文件与文件夹操作代码(附xcopy命令详解)
    UE4 Pak包加载
    libcurl 文件上传
    win7右键在目录当前打开命令cmd窗口
    SQLiteDeveloper破解
    Excel替换应用
    解决局域网2级路由互相连接共享的问题
  • 原文地址:https://www.cnblogs.com/MurasameLory-chenyulong/p/13045009.html
Copyright © 2011-2022 走看看