码迷,mamicode.com
首页 > 编程语言 > 详细

算法提高 日期计算

时间:2016-08-25 14:31:22      阅读:579      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

  已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。

输入描述

  输入只有一行
  YYYY MM DD

输出描述

  输出只有一行
  W

输入样例 

1599 1 1

输出样例

5 

分析

基姆拉尔森计算公式:
  W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
  (需要使用switch...case语句判断星期几)
改进:
  W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1
  (计算出的结果直接是对应的星期几)
注意:
  当month=1或2时,需要将其改为month+12并且year-1

测试代码

 1 #include <stdio.h>
 2 
 3 int main(void)
 4 {
 5     int year, month, day;
 6     int x;
 7     
 8     scanf("%d%d%d", &year, &month, &day);
 9     if(month == 1 || month == 2)
10     {  
11         month += 12;  
12         year--;  
13     }  
14     x = (day + 2 * month + 3 * ( month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7 + 1;         
15     printf("%d\n", x);
16     return 0;
17 }

 

算法提高 日期计算

标签:

原文地址:http://www.cnblogs.com/maxin/p/5806615.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!