本文主要是介绍末日重现~世纪末的星期日,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
诶嘿,请看下题
标题: 世纪末的星期
曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会…
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!
于是,“谣言制造商”又修改为星期日…
1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请回答该年份(只写这个4位整数,不要写12月31等多余信息)
做这个题首先,我想的是一百年里有多少个闰年,然后我查了下1999到2099有多少个闰年,毕竟这个是和天数有关的对不对?
然后第二步,知道闰年是多少个了(平常每100年是24个闰年,每四个一百年就多了一个闰年)
更何况题目中是1999年开始,而2000年恰巧就是一个闰年,那么我们可以设有x个百年,平常就是一年365天,多出来的时间就是,每x多出24天,也就是天数是365 * 100 * x + x * 24;但是呢,还有25个闰年的时候呢。
x/4,这就是25个闰年的时候,余数如果大于零,那就还得加一天,如果是零,那就不用加1;
总之总之,代码如下:
#include <stdio.h>
int main()
{int start = 1999;int x;//x百年后会出现int day;//天数int yu;//yu = 余:是指总天数除以7之后余的天数 int a,b;for(x = 1;x<10000;x++){day = x*100*365+x*24;a = x/4;//每四百年就有一次一百年中有25个闰年,平常是24个闰年 b = x%4;//第一个一百年里也是有25个闰年,多一天 if(b>0){day = day + a + 1;} else{day = day + a;}yu = day%7;if(yu == 2)//余天数是两天的时候正好是周日 {break;}}printf("%d",start+x*100);}
代码运行如下:
这篇关于末日重现~世纪末的星期日的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!