• 日期类题目题解


      今天追的综艺更新了,没想到超长待机三个小时,再加上乱七八糟的事情耽误了很多的时间,没有时间更新今日份所有题目的总结了。恰好今天这套题很多都是一个类型的题目那就分开整理吧,今天更新计算日期类的题目,其他的等明天继续更。

      关于计算日期类的题目,可以说都很简单了,而且一般都是小题。就算不会代码差不多电脑自带的日期啊、execl啊都能做,所以我之前都是用的vbs做的,挺方便的。但是听大佬说国赛没有execl什么的正好今天的题有几道关于日期的题目,趁这个机会整理出来。稍后更新一篇常用的方法吧。

    第一题:高斯日记

    题目: 大数学家高斯有个好习惯:无论如何都要记日记。

        他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

        后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

        高斯出生于:1777年4月30日。

        在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

        高斯获得博士学位的那天日记上标着:8113  

        请你算出高斯获得博士学位的年月日。

    这个题其实很简单就是实例化Calendar然后用它的一些方法,先赋值高斯出生日期17770430,再用add方法加日记对应天数。最后用get方法得出对应年月日的值。

    需要注意的点:1.month值:一年中的一月的值为 0,记得相应地方的+1 || -1

              2.这个是我自己认为的,不知道对错啊。因为我自己计算一些天数的问题上经常不知道当前天应该算1还是0,所以带了题中给的例子5343天->17971215,所以记得add方法里的天数要-1

    代码如下:

     1 import java.util.Calendar;
     2 
     3 public class Main {
     4 
     5     public static void main(String[] args) {
     6         Calendar cal=Calendar.getInstance();
     7         cal.set(Calendar.YEAR, 1777);
     8         cal.set(Calendar.MONTH,3);
     9         cal.set(Calendar.DATE,30);
    10 //        cal.add(Calendar.DATE,5343-1);
    11         cal.add(Calendar.DATE,8113-1);
    12         System.out.println(cal.get(Calendar.YEAR));
    13         System.out.println(cal.get(Calendar.MONTH)+1);
    14         System.out.println(cal.get(Calendar.DATE));
    15     }
    16 
    17 }

    第二题:判断闰年问题

    闰年问题:四年一闰,百年不闰;四百年又闰

    代码如下:也是很简单,不多说

     1 import java.util.Scanner;
     2 
     3 public class Main {
     4 
     5     public static void main(String[] args) {
     6 
     7 //        闰年问题:四年一闰,百年不闰;四百年又闰
     8         Scanner sc=new Scanner(System.in);
     9         int y=sc.nextInt();
    10         if((y % 4==0 && y % 100!=0)||(y % 400==0)){
    11             System.out.println("yes");
    12         }else{
    13             System.out.println("no");
    14         }
    15     }
    16 
    17 }

    第三题:世纪末的星期

    曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。
    
    还有人称今后的某个世纪末的12月31日,如果是星期一则会....
    
    有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 
    
    于是,“谣言制造商”又修改为星期日......
    
    1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
    
    请回答该年份(只写这个4位整数,不要写12月31等多余信息)

    题解:这个我一开始用电脑自带的就不行了,因为没有那么多的日期。所以改用代码完成。
    1.第一种,因为说了xx99年,所以for循环,20 21 22 23.......判断20991231 21991231 22991231 23991231.....对应是周日输入。自己选择最近的一个世纪末日期
    代码如下:
    ps:该注意的问题还是月份从0开始,星期->周日对应值是1
     1 import java.util.Calendar;
     2 
     3 public class Main {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7 //        方法一:
     8         for(int i=20;i<40;i++){
     9             int y=i*100+99;
    10             int m=12-1;//cal里month从0开始
    11             int d=31;
    12             Calendar cal=Calendar.getInstance();
    13             cal.set(Calendar.YEAR,y);
    14             cal.set(Calendar.MONTH, m);
    15             cal.set(Calendar.DATE, d);
    16             if(cal.get(Calendar.DAY_OF_WEEK)==1)//周日对应的值是1
    17             System.out.println(y);
    18         }
    19     }
    20 
    21 }

      2.知道19991231是周五了,然后一年一年的加。闰年366普通365加上每年对应的天数,然后在每个世纪末年判断是否为周天。具体的代码里都有注释听清楚的了。

    代码如下:

    import java.util.Calendar;
    
    public class Main{
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    //        方法二:
            int year=1999,daysum=0;
            while(year<2500){
                year++;
                daysum+=365;
                //如果闰年多一天->366
                if(year%400==0||(year%4==0&&year%100!=0)) daysum++;
                //第一个是在说xx99年,第二个条件判断周天(1999,周五->求xx99是周天)
                if((year %100==99)&&(daysum%7==2)){
                    System.out.println(year);
                }
            }
        }
    
    }

      好了,好了。更完了今天的部分。明天起床了在整理其他的题目啊~~~


  • 相关阅读:
    JetBrains 里不为人知的秘密(2)--快捷键篇
    phpstorm 2017之输入法
    JetBrains 里不为人知的秘密
    Windows Server 2012 远程连接
    visibility和display的区别
    【dp】摘花生
    【dp】 背包问题
    【dp】求最长公共子序列
    【dp】合唱队形
    【dp】友好城市
  • 原文地址:https://www.cnblogs.com/ShallByeBye/p/8411086.html
Copyright © 2020-2023  润新知