基础练习

1.逢七跳过(应用)

需求:朋友聚会的时候可能会玩一个游戏:逢七过。 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7
的倍数时都要说:过。 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过
规则的数据。 这样,大家将来在玩游戏的时候,就知道哪些数据要说:过

public class test01 {
    public static void main(String[] args) {
        for (int i=1;i<100;i++){
            //根据规则,用if语句实现数据的判断:要么个位是7,要么十位是7,要么能够被7整除
            if (i%10==7 || i/10%7==7 || i%7==0){
                System.out.println(i);
            }
        }
    }
}

2.不死神兔(应用)

需求:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第二十个月的兔子对数为多少?

public class test02 {
    public static void main(String[] args) {
        int[] arr = new int[20];
        arr[0] = 1;
        arr[1] = 1;
        for (int i =2;i<arr.length;i++){
            arr[i] = arr[i-1]+arr[i-2];
        }
        System.out.println(arr[19]);
    }
}

3.百钱百鸡(应用)

需求:我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱
买百鸡,问鸡翁、鸡母、鸡雏各几何?

public class test03 {
    public static void main(String[] args) {
        for (int x= 0;x<=20;x++){
            for (int y=0;y<=33;y++){
                int z = 100-x-y;
                if (z%3==0 && 5*x+3*y+z/3==100){
                    System.out.println(x+","+y+","+z);
                }
            }
        }
    }
}

4.数组元素求和(应用)

需求:有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, 要求是:求和的元素个位和十位都不能是7,并且只能是偶数

public class test04 {
    public static void main(String[] args) {
        int[] arr = {68,27,95,88,171,996,51,210};
        int sum = 0;
        for (int i= 0;i<arr.length;i++){
            if (arr[i]%10 != 7 && arr[i]/10%10 != 7 && arr[i]%2 ==0){
                sum += arr[i];
            }
        }
        System.out.println(sum);
    }
}

5.判断俩个数组是否相等(应用)

需求:定义一个方法,用于比较两个数组的内容是否相同

public class test05 {
    public static void main(String[] args) {
        int[] arr = {11,22,33,44,55};
        int[] arr2 = {11,22,33,44,55};
        boolean flag = compare(arr, arr2);
        System.out.println(flag);
    }
    public static boolean compare(int[] arr,int[] arr2){
        if (arr.length != arr2.length){
            return false;
        }
        for (int i=0;i<arr.length;i++){
            if (arr[i] != arr2[i]){
                return false;
            }
        }
        return true;
    }
}

6.查找元素在数组中出现的索引值(应用)

需求:已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。并在控制台输出找到的索引值。如果没有查找到,则输出-1

public class test06 {
    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据");
        int number = scanner.nextInt();
        int idenx = getIdenx(arr, number);
        System.out.println(idenx);

    }
    public static int getIdenx(int[] arr,int number){
        int index = -1;
       for (int i = 0;i<arr.length;i++){
           if (arr[i] == number){
               index = i;
               break;
           }
       }
        return index;
    }
}

7.数组元素反转(应用)

需求:已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换, 交换后的数组 arr = {50, 46, 37, 28,19}; 并在控制台输出交换后的数组元素。

public class test07 {
    public static void main(String[] args) {
        int[] arr = {19,28,37,46,50};
        reverse(arr);
        printArray(arr);
    }
    public static void reverse(int[] arr){
        for (int start= 0,end = arr.length-1;start<=end;start++,end--){
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }
        System.out.println("]");
    }
}

8.评委打分(应用)

需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)

public class test08 {
    public static void main(String[] args) {
        int[] arr = new int[6];
        Scanner sc = new Scanner(System.in);
        for(int x=0; x<arr.length; x++) {
            System.out.println("请输入第" + (x + 1) + "个评委的打分:");
            arr[x] = sc.nextInt();
        }
        int max = getMax(arr);
        int min = getMin(arr);
        int sum = getSum(arr);
        int avg = (sum - max - min)/arr.length-2;
        System.out.println(avg);
    }
    //求最大值
    public static int getMax(int[] arr) {
        int max = arr[0];
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        return max;
    }
    //求最小值
    public static int getMin(int[] arr) {
        int min = arr[0];
        for(int x=1; x<arr.length; x++) {
            if(arr[x] < min) {
                min = arr[x];
            }
        }
        return min;
    }
    //求和
    public static int getSum(int[] arr) {
        int sum = 0;
        for(int x=0; x<arr.length; x++) {
            sum += arr[x];
        }
        return sum;
    }
    //遍历数组
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }
        System.out.println("]");
    }
}