今天追的综艺更新了,没想到超长待机三个小时,再加上乱七八糟的事情耽误了很多的时间,没有时间更新今日份所有题目的总结了。恰好今天这套题很多都是一个类型的题目那就分开整理吧,今天更新计算日期类的题目,其他的等明天继续更。
关于计算日期类的题目,可以说都很简单了,而且一般都是小题。就算不会代码差不多电脑自带的日期啊、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