java-刷题-day2

今天依旧带来几个小题目~

首先来看第一题~题目是:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多 少米?第10次反弹多高

首先我们可以知道我们要求经过了多少米以及第十次反弹的距离,首先我们需要知道,计算经过多少距离不仅仅是落下的距离还有一个反弹距离!!

这个是我的理论思路,但是还是会出现有小数的情况,所以我们需要改为double类型!然后就是在我们寻找规律时候会发现总会有两组数据是相同的,然后会出现一个单独的数,而那个数正好是反弹的距离。那我们可以设想,如果算到第九次的所有距离那么一定会出现一个反弹(因为第九次降落我们才能算完九次,然而降落就会弹起来),也就是说我们只需要循环九次,最后一次弹起来的那个数我们记录下来就是第十次反弹的距离。

java 复制代码
import java.util.Random;
import java.util.Scanner;

public class day2 {
    //一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,
    // 求它在 第10次落地时,共经过多 少米?第10次反弹多高
    public static void main1(String[] args) {
        double h=100;//初始高度
        double sum = 100;//第一次掉下来的先加进去
        double ret;//每次反弹高度
        double t_ret;
        for (int i = 1; i < 10; i++) {//只循环九次,得到第九次反弹高度
            ret = h/2.0;//计算反弹高度
            sum+=ret*2;//反弹+下落
            h=ret;
        }
        t_ret = h/2.0;//第十次反弹高度
        System.out.println("十次总共经过"+sum+"米");
        System.out.println("第十次反弹"+t_ret+"米高");
    }
}

我们继续来看第二题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔都不死,问第n个月的兔子对数为多少?

第三个月开始才会每个月都生一对兔子也就是说过完完整的两个月就已经开始生了!!

上面是我的思路草稿,在第一次思考中,我发现这个规律和斐波那契数列是一样的,但是这样有过于单调了,于是我开始开辟第二种方法,果然让我想到了,通过对斐波那契概念的小改动完成,通过第三项为前二项之和来推断,思路可看上面的图

java 复制代码
import java.util.Random;
import java.util.Scanner;

public class day2 {
    public static int func(int n){
        //首先第一个月和第二个月都是没生也就是1个
        if(n==1||n==2){
            return 1;
        }
        int a=1,b=1,c;
        for (int i=3;i<=n;i++){//第三个月才开始
            c=a+b;
            a=b;
            b=c;
        }
        return b;
    }

    public static void main(String[] args) {
        //有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
        // 假如兔都不死,问第n个月的兔子对数为多少
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int ret = func(n);
        System.out.println("第"+n+"月后总共有"+ret+"对兔子");
    }
}

继续看我们的第三题:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

我们看一下这个,虽然题目长,实际就是多加了几个2

java 复制代码
import java.util.Random;
import java.util.Scanner;

public class day2 {
    public static void main3(String[] args) {
        //有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三
        //个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
        //实际就是+2
        int n = 10;//第一个人
        for (int i=1;i<5;i++){
            n+=2;
        }
        System.out.println(n);
    }
}

来到今天的最后一题!!给定一个3乘以3的二维数组,里面的数据随机生成。分别求出两个对角线的元素之和

这个题其实需要注意两点,应该是随机数,然后就是找对角线的规律!

其实吧对角线坐标画出来就能看到非常明显的规律啦~然后就是递推一下i的截止条件就可以啦!!

java 复制代码
import java.util.Random;
import java.util.Scanner;

public class day2 {
    public static void main4(String[] args) {
        //给定一个3乘以3的二维数组,里面的数据随机生成。分别求出两个对角线的元素之和
        int n=3;
        int[][] arr = new int[n][n];
        Random rand = new Random();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                arr[i][j]=rand.nextInt(100);//存0-99
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
        int sum_a=0,sum_b=0;
        for (int i = 0; i < n; i++) {
            sum_a+=arr[i][i];
            sum_b+=arr[i][n-1-i];
        }
        System.out.println("主对角线:"+sum_a);
        System.out.println("副对角线:"+sum_b);
    }
}

今天刷题到此结束!!点上关注我们明天再见!~~~

相关推荐
2201_757830872 小时前
全局异常处理器
java
小徐Chao努力4 小时前
【Langchain4j-Java AI开发】09-Agent智能体工作流
java·开发语言·人工智能
Coder_Boy_4 小时前
SpringAI与LangChain4j的智能应用-(理论篇3)
java·人工智能·spring boot·langchain
Coder_Boy_4 小时前
基于SpringAI的智能平台基座开发-(六)
java·数据库·人工智能·spring·langchain·langchain4j
伯明翰java5 小时前
Java数据类型与变量
java·开发语言
想用offer打牌5 小时前
如何开启第一次开源贡献之路?
java·后端·面试·开源·github
小许学java6 小时前
Spring原理
java·spring·生命周期·作用域·原理
教练、我想打篮球6 小时前
122 Hession,FastJson,ObjectInputStream的序列化反序列化相同引用的处理
java·config·utils
酷柚易汛6 小时前
酷柚易汛ERP 2025-12-26系统升级日志
java·前端·数据库·php
侠客行03177 小时前
Mybatis入门到精通 一
java·mybatis·源码阅读