JavaSE习题 数字9的个数与闰年问题

本文解析了Java编程中的两个经典问题:一是统计1到100中数字9出现的次数,强调了取余和整除运算的区分及99的特殊处理;二是演示如何筛选1000-2000范围内的闰年,介绍了判断闰年的规则。

JavaSE习题 数字9的个数与闰年问题

目录

题目一:编写程序数一下1到100的所有整数中出现多少个数字9。

题目二:输出1000 - 2000之间的所有闰年。


题目一:编写程序数一下1到100的所有整数中出现多少个数字9。

题目分析:1-100中出现数字9的数字有 9、19、29、39、49、59、 69、 79、 89 、 99

                                                              90 、 91、 92、 93、 94 、 95、 96、97、 98

我们可以看到这些包含9的数字其实分为两大类:a. 数字%10 = 9;

                                                                              b. 数字/10 = 9; 

所以,根据此分析可得到如下代码:

public class TestDome {
    public static void main(String[] args){
        int num=1;
        int count=0;
        while(num<=100){
            if(num % 10 == 9 || num / 10==9){
               count ++;
            } 
            num++;
        }
        System.out.println("1-100中出现数字9的个数为" + count);
    }
}

但得到结果为:

!!!但是此结果是错误的,因为我们忽略了一个很重要的问题,那就是数字99。

数字99中含有了2个9,但按照上述算法只将99中的9算了1遍,所以少算了一遍。因此修改以后的代码应该如下所示:

public class TestDome {
    public static void main(String[] args){
        int num=1;
        int count=0;
        while(num<=100){
            if(num % 10 == 9){
            count++;
            }
            if( num / 10==9){
                count++;
            }
            num++;
        }

        System.out.println("1-100中出现数字9的个数为" + count);


        }

结果如下:

此时结果才是正确的,因此一定要注意此题的两个考点:a.取余和取整(%、/) ;

                                                                                           b,99在此题中的特殊性。

题目二:输出1000 - 2000之间的所有闰年。

题目分析:a.年份是4的倍数的一般都是闰年。

                  b.年份是100的倍数时,必须是400的倍数才是闰年。

因此可以得到以下结论:a. 年份%4 = 0,此时 年份%100!=0;

                                        b, 年份%400 = 0,此时 年份%100可以等于0.

所以,根据分析可得到如下代码:

public class TestDome {
    public static void main(String[] args) {
        int num = 1000;
        while (num <= 2000) {
            if (num % 4 == 0 && num % 100 != 0 || num % 400 == 0) {

                System.out.println(num +"是闰年");
            }
            num++;
        }
    }
}

结果如下: 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值