0
点赞
收藏
分享

微信扫一扫

Java 019. 计算星期天的数量

仲秋花似锦 2022-01-20 阅读 58

以下是一些已知信息,但是或许你需要自己做一些其他的调查。
⚫ 1900 年 1 月 1 日是星期一。
⚫ 30 天的月份有:9 月,4 月,6 月,1 1 月。
⚫ 此外的月份都是 31 天,当然 2 月除外。
⚫ 2 月在闰年有 29 天,其他时候有 28 天。
⚫ 年份可以被 4 整除的是闰年,但是不能 400 整除的世纪年(100 的整数倍年)除外。
求:20 世纪(1901 年 1 月 1 日到 2000 年 12 月 31 日)一共有多少个星期日落在了
当月的第一天?
答案:171
思路:通过题中信息可得知1901年1月1日是星期二,然后循环使用求余运算即可求得结果
代码如下:

 //1901年1月1日是星期二
   public static void main(String[] args) {
       int[]a={0,31,28,31,30,31,30,31,31,30,31,30,31};//1~12月每月天数
       int[]b=new int[7];
       b[1]=1;//1901年1月1日是星期二
       int t=1;
       int m;
       for(int i=1901;i<=2000;i++){
           if(i%4==0&&i%400!=0) a[2]=29;
           else a[2]=28;
           for(int j=1;j<=12;j++){
               if(i==2000&&j==12) break;//这种情况其实算的是2001年1月1日是星期几
               m=a[j]%7;
               b[(m+t)%7]++;
               t=(m+t)%7;//每月的t根据上月首日是星期几来决定
               if(t==6) System.out.println(i+"A"+(j+1));//输出当月第一天是星期天的时间
           }
       }
       System.out.println(b[6]);
   }

程序运行结果:

在这里插入图片描述
(由于输出项过多故运行结果并未截全)

举报

相关推荐

0 条评论