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

  • Post author:
  • Post category:java


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++;
        }
    }
}

结果如下:



版权声明:本文为weixin_51312723原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。