Java 综合练习

目录

1 减肥计划

2 逢七过

3 不死神兔

4 百钱白鸡

5 数组元素求和

6 数组内容相同

7 查找

8 反转

9 评委打分


1 减肥计划

通过键盘录入的方式输入星期数(1-7的整数),显示今天的减肥活动,使用switch和if两种判断语句分别完成。(可写成2个方法)
​            周一:跑步
​            周二:游泳
​            周三:慢走
​            周四:动感单车
​            周五:拳击
​            周六:爬山
​            周日:好好吃一顿

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期数(1-7的整数):");
        int n = sc.nextInt();  //输入的星期数
        int c = activity2(n);   //调用方法,显示今天的减肥活动
    }

    public static int activity(int n){  //if方法进行判断
        if(n < 1 || n > 7){
            System.out.println("请输入正确的星期数!");
        }else if(n == 1){
            System.out.println("跑步");
        }else if(n == 2){
            System.out.println("游泳");
        }else if(n == 3){
            System.out.println("慢走");
        }else if(n == 4){
            System.out.println("动感单车");
        }else if(n == 5){
            System.out.println("拳击");
        }else if(n == 6){
            System.out.println("爬山");
        }else{
            System.out.println("好好吃一顿");
        }
        return n;
    }

    public static int activity2(int n){   //switch方法
        switch (n){
            case 1:
                System.out.println("跑步");
                break;
            case 2:
                System.out.println("游泳");
                break;
            case 3:
                System.out.println("慢走");
                break;
            case 4:
                System.out.println("动感单车");
                break;
            case 5:
                System.out.println("拳击");
                break;
            case 6:
                System.out.println("爬山");
                break;
            case 7:
                System.out.println("好好吃一顿");
                break;
            default:
                System.out.println("请输入正确的星期数");
        }
        return n;
    }

2 逢七过

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

    public static void main(String[] args) {
        for(int i = 1; i <= 100; i++){     //遍历1-100
            if(i%7 == 0 || i%10 == 7 || i/10%10 ==7){     //包含7或者是7的倍数时(也就是说,个位有7,十位有7,以及是7的倍数时,喊过)
                System.out.println(i);
            }
        }
    }

3 不死神兔

有一个很有名的数学逻辑题叫做不死神兔问题。有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

    public static void main(String[] args) {
        int[] a = new int[20];
        a[0] = 1;   //第一个月为1对
        a[1] = 1;   //第二个月为1对
        for(int i = 2; i <a.length; i++){      //第三个月开始,兔子对数为前两个月的对数相加
            a[i] = a[i-2] + a[i-1];
        }
        System.out.println("二十个月的兔子对数为:" + a[a.length-1]);
    }

4 百钱白鸡

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

    public static void main(String[] args) {
        int x;  //鸡翁的只数
        int y;  //鸡母的只数
        int z;  //鸡雏的只数

        for( x = 0; x <= 20; x++){      //鸡翁的只数,一百文最多买20只
            for(y = 0; y <= 33; y++){   //鸡母的只数,一百文最多买33只
                z = 100-x-y;     //鸡雏的只数,是一百只鸡减去鸡翁和鸡母
                if(z%3 == 0 && x*5 + y*3 +z/3 == 100){     //要同时满足,鸡雏的个数是3的倍数,以及三种鸡所购买的钱相加为100
                    System.out.println(x + " " + y + " " + z);
                }
            }
        }
    }

5 数组元素求和

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

    public static void main(String[] args) {
        int[] a = {68,27,95,88,171,996,51,210};
        int sum = 0;

        for(int i = 0; i < a.length; i++){
            if(a[i]%10 != 7 && a[i]/10%10 != 7 && a[i]%2 == 0){  //元素个位和十位都不能是7(个:a[i]%10, 十:a[i]/10%10)
                System.out.println(a[i]);
                sum += a[i];
            }
        }
        System.out.println("元素和为:" + sum);
    }

6 数组内容相同

设计一个方法,用于比较两个数组的内容是否相同。

    public static void main(String[] args) {
        int[] a = {1,2,3,4,5};
        int[] b = {1,2,3,4,5};

        boolean flag = equals(a,b);    //调用方法
        System.out.println(flag);
    }

    public static boolean equals(int[] a, int[] b){   //判断是否相等,选用boolean作为返回值,两个数组作为参数
        if(a.length != b.length){    //判断长度是否一致
            return false;
        }

        for(int i = 0; i < a.length; i++){   //前面以及判断长度,故程序运行到这里,两个数组的长度是相同的,所以任意取一长度
            if (a[i] != b[i]){    //判断相对应的值是否相等,不等返回false
                return false;
            }
        }

        return true;   //返回true
    }

7 查找

已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据。定义一个方法,完成查找该数据在数组中的索引,并在控制台输出找到的索引值。

    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要查找的值:");
        int n = sc.nextInt();
        int index = getIndex(arr,n);
        System.out.println(index);
    }

    public static int getIndex(int[] a, int n){
        int index = -1;   //初始化一个下标变量
        for(int i = 0; i < a.length; i++){   //遍历数组
            if(a[i] == n){  //判断,如果数组有,就把下标值赋值给index
                index = i;
                break;   //找到后就结束循环
            }
        }
        return index;   //返回index
    }

8 反转

已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值反转(在原数组中操作,不能定义第二个数组),反转后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出反转后的数组元素。

    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};
        System.out.println("反转前");
        System.out.println(Arrays.toString(arr));
        reversal(arr);
        System.out.println("反转后");
        System.out.println(Arrays.toString(arr));
    }

    public static void reversal(int[] arr){
        for(int start = 0, end = arr.length-1; start <= end; start++,end--){  //最后一个和第一个交换,倒数第二个和第二个交换,指导start<=end
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }

9 评委打分

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

    public static void main(String[] args) {
        int[] a = new int[6];
        Scanner sc = new Scanner(System.in);
        for(int i = 0; i < a.length; i++){
            System.out.println("请输入第" + (i+1) + "位评委所打成绩:");
            a[i] = sc.nextInt();
        }
        System.out.println(Arrays.toString(a));

        int max = getMax(a);
        int min = getMin(a);
        int sum = getSum(a);
        int avg = (sum - max - min)/(a.length-2);
        System.out.println("平均分为:" + avg);
    }

    public static int getMax(int[] a){  //获取最大值
        int max = a[0];
        for (int i = 0; i < a.length; i++) {
            if(max < a[i]){
                max = a[i];
            }
        }
        return max;
    }

    public static int getMin(int[] a){   //获取最小值
        int min = a[0];
        for (int i = 0; i < a.length; i++) {
            if(min > a[i]){
                min = a[i];
            }
        }
        return min;
    }

    public static int getSum(int[] a){  //获取元素和
        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        return sum;
    }

用来完成大作业的。文档内容: 1 Java技术体系 1.1 Java语言 1.2 Java平台 1.3 Java应用领域 2 Java语言的技术特点 2.1 1 2.2 2 2.3 3 3 Java语言与C++的异同分析总结。 4 选用C和java语言时编程算法程序有什么不同,有什么优势和劣势。 5 自己编程学习的级别和状态。以及自己以后的编程学习的计划和想法。 6 下面3道题目中选一道,给出算法分析和程序。 1)“黄金分割数”在我们的生活中很常见,但是在不同的应用领域,要求的精度也不一样。 例如:三位小数是0.618 现在我们需要你能求出保留100位小数的黄金分割数,采用的算法为“分层计算法”: 黄金数= 1 --------------- 1+ 1 ------------- 1+ 1 ----------- 1+ 1 --------- ..... 注意,计算出的结果,如果第100位为0也需要保留。 2)已知一个数列: 5,2,4,3,7,6 那么,在这个数列中存在这样一些“连续数”,例如:5,2,4,3这个子数列排序后是连续的。同样2,4,3也是连续的,为了方便表示 我们使用下标来标识,这样,这个数列中存在以下“连续数”: [1,1] [1,4] [1,6] [2,2] [2,4] [3,3] [3,4] [4,4] [5,5] [5,6] [6,6] 这样,他就存在11个“连续数”。现在需要你在用户找出一个数组中所有的“连续数”。 要求: 1、用户输入一个整数N,表示下面数组的个数 2、用户每输入一行作为一个数组 如: 用户输入: 1 5,2,4,3,7,6 程序输出: 11 3)有一种数我们称之为幸运数,它的特点是这样的,首先,由自然数按顺序排列: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 … 这样,1比较特殊, 1为第一个幸运数,那么,我们移除掉序号能被2整除的数(注意:是序号,而不是数本身,每次移除后都重新排序)就剩下: 1 3 5 7 9 11 13 15 17 19… 3为第二个幸运数,那么我们需要去掉序号能被3(下一次是除4,然后是5,每次加1)整除的数,5 11 17...剩下: 1 3 7 9 13 15 19… 那么7为第三个幸运数,后面的幸运数,依此类推,移除之后剩下的数字都是幸运数。 现在我们需要你求出给定的m和n之间的幸运数的个数: 例如:给定1 20,那么个数为:5(5个幸运数分别是1,3,7,13,19) 现在要求用户输入两个数m和n(m<n<=1000*1000),输出幸运数的个数。 例如: 用户输入: 1 20 程序输出: 5 格式:小四,1.5倍行距
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值