JavaSE习题 数字9的个数与闰年问题
目录
题目一:编写程序数一下1到100的所有整数中出现多少个数字9。
题目一:编写程序数一下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 版权协议,转载请附上原文出处链接和本声明。