50道Java基础编程题(一)——新解2021(配有超详细注释)(1到10题)


前言

因为最近在练习Java编程,看了一个写有50道题的大体量作业,想练练手,而且我看这50道题是五、六年前的了(我不太清楚csdn里有没有很新的答题方法,没有仔细搜),其给的答案我看着有点复杂(可能是太多了,我不想认真看),我就想着用最近所学的重新写一遍看看。

如果我写的程序有什么漏洞的话,请大家务必指出,我自己看自己的程序肯定是看不出什么名堂来的(除非它是飘红了)。

下面我给的代码都是我自己编写(当然不排除有些题想不出来,去网上找的),并在idea上运行一遍了,可以出结果的,并配有详细注释(就算现在没有,之后也会加上的)。

个人感觉写注释还是蛮好的,可以加强个人理解。(注释是给小白看的,如果真的想要更好的理解代码,建议先自己看代码,实在是理解不了再看注释)

因为题目很多,有的和我之前做的重复了,不过还是放这了,同一道题,过几天再写,感触也有所不同。

废话有点多,下面正式开始。


1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

程序分析:
第一个月1对
第二个月1对
第三个月 2 对(1+1)
第四个月 3 对(2+1)
第五个月 5 对(3+2)
第六个月 8 对(5+3)
相信到这里,大家就可以看出来了,实际上不用管什么时候兔子开始生啊,每个月有几对兔子生,
这就是一道找规律的数学题而已,不要把自己搞懵了。
这个月的兔子数 = 上个月的兔子数 + 上上个月的兔子数*/

import java.util.Scanner;

public class The01 {
   
    public static void main(String[] args){
   
    	//Scanner类获取输入固定用法 Scanner sc = new Scanner(System.in);
        Scanner sc = new Scanner(System.in);
        //输入月份
        System.out.println("请输入查询的月份");
        int n = sc.nextInt();
        System.out.println("第"+n+"月份有"+rabbit(n)+"对兔子");
    }
    static int rabbit(int n){
      //这里n为形参,n为a,c,d之类的都行,记得如果改的话,下面的也要改
        //如果是第一个月或是第二个月
        if(n==1 || n==2) {
   
            //返回值1:就一对
            return 1;
        }else {
       //不是的话执行如下  返回上个月的加上上上个月的
            return rabbit(n-1)+rabbit(n-2);
        }
    }
}

2.判断101-200之间有多少个素数,并输出所有素数。

程序分析:
像这样的判断一个数到一个数之间的这样类型的题,首先想到用“for循环”来写,因为for循环可以直接遍历出来。(如果不知道for循环是怎么循环的,可以看我之前写的文章,也可以上网搜)
素数:素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
这里用该数除以另外一个数,如果能够整除,说明该数不是素数。

public class The02 {
   
    public static void main(String[] args){
   
        //循环遍历
        for(int i=101;i<=200;i++){
   
            //参数m,记录该数有多少个能够被整除的数
            int m = 0;
            //遍历被除数,从2开始,1不算(懂的都懂)
            //这里从1开始,也行,不过下面的if语句就是m=1了
            for (int j=2;j<i;j++){
   
                //能够整除,m+1
                if(i%j==0){
   
                    m++;
                }
            }
            //素数是指一个能被整除的都不能有
            if(m==0){
   
                //输出素数
                System.out.println(i);
            }
        }
    }
}

3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:
打印出所有的水仙花数,就是要遍历了,不然一个个的太麻烦
上面说水仙花数是一个三位数,就给定了范围100~999
上面又说到三次方,利用Math函数里的pow()方法

public class The03 {
   
    public static void main(String[] args){
   
        //遍历,注意是<1000,实际上就是<=999,因为是int类型,整数
        for(
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值