2.3日期类题目题解

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

  关于计算日期类的题目,可以说都很简单了,而且一般都是小题。就算不会代码差不多电脑自带的日期啊、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);
            }
        }
    }

}

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


原文地址:https://www.cnblogs.com/ShallByeBye/p/8411086.html

时间: 2024-08-29 08:54:33

2.3日期类题目题解的相关文章

Java日期类题目

每类题都有各种各样解决的方式,大家随意发散 分析以下需求,并用代码实现 1.已知日期字符串:"2015-10-20",将该日期字符串转换为日期对象 2.将(1)中的日期对象转换为日历类的对象 3.根据日期对象获取改日期是星期几,以及这一年的第几天 4.通过键盘录入日期字符串,格式(2015-10-20) 如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是2015年的第 293 天" 原文地址:https://www.cnblogs.com

实现日期类

题目:实现一个日期类,主要实现日期计算功能: 日期+天数=日期: 日期-天数=日期: 日期-日期=天数: 要实现该日期类,必须熟练掌握运算符重载的概念和实现方法. 以下是编写的一个日期类: 头文件: #ifndef __DATE_H__ #define __DATE_H__ #include<iostream> using namespace std; class Date { public:  Date(int year = 1900, int month = 1, int day = 1)

PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/problem-sets/994805046380707840/problems 目录 (点击对应题目即可进入相应题解--小声BB--) L1-001 Hello World (5 分) L1-002 打印沙漏 (20 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5

python自测——操作类题目

操作类题目 49.Python 交换两个变量的值50.在读文件操作的时候会使用 read.readline 或者 readlines,简述它们各自的作用51.json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类型?52.json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?53.有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中.54.如果当前的日期为 20190530,要求

日期类 Date

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /* 日期类 Date Calendar 日期格式化类 SimpleDateFormat */ public class Demo3 { public static void main(String[] args) throws ParseException {

day17 包装类、日期类

包装类 作用:1.丰富了基本数据类型只能存放值的问题,还提供了大量的方法或常量. 2.包装类充当了基本数据类型和引用数据类型转换的桥梁. 应用层面:包装类.String.基本数据类型的互相转换. 1.基本数据类型转为String: String str = Integer.toString(10): String str = 10 + "": 2.String转换为基本数据类型: int i = Integer.parseInt(str): 3.基本数据类型和包装类互转换: 语法糖--

利用java日期类生成数据仓库维度表

利用java日期类生成数据仓库维度表 Date类: 最基础的日期时间类,返回一个相对日期的毫秒数.精确到毫秒,但不支持日期的国际化和分时区显示.Date 类从Java 开发包(JDK)1.0 就开始进化,当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了,这种改进旨在更好的处理日期数据的国际化格式. Calender类: 相对于Date更加强大的时间类,是抽象类,提供了常规的日期修改功能和国际化

Problem B: 时间和日期类(III)

Problem B: 时间和日期类(III) Time Limit: 4 Sec  Memory Limit: 128 MBSubmit: 2889  Solved: 1732[Submit][Status][Web Board] Description 设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间. 设计日期时间类DateTime由2个成员组成,分别是一个Date类对象和一个Time类对象: 设计DateTime类需支持以下操作: DateTime::DateTime()无参构

Java:日历类、日期类、数学类、运行时类、随机类、系统类

一:Calendar类 java.util 抽象类Calendar   1.static Calendar getInstance()使用默认时区和语言环境获得一个日历. 2. int get(int field) 返回给定日历字段的值. java.lang.Object 继承者 java.util.Calendar 所有已实现的接口: Serializable, Cloneable, Comparable<Calendar> 直接已知子类: GregorianCalendar 对于日期字段: