Discuz! Board

 找回密码
 立即注册
查看: 907|回复: 0

星期计算

[复制链接]

574

主题

758

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435189

烈空座 Lv:100
发表于 2022-10-13 18:01:01 | 显示全部楼层 |阅读模式

C语言根据日期判断星期几(使用基姆拉尔森计算公式)

算法如下:

基姆拉尔森计算公式

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日数,m表示月份数,y表示年数。

注意:在公式中有个与其他公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

  1. #include "stdio.h"

  2. void CaculateWeekDay(int y,int m, int d)
  3. {
  4.         if(m==1||m==2) {
  5.         m+=12;
  6.         y--;
  7.         }
  8.         int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
  9.         switch(iWeek)
  10.         {
  11.         case 0: printf("星期一\n"); break;
  12.         case 1: printf("星期二\n"); break;
  13.         case 2: printf("星期三\n"); break;
  14.         case 3: printf("星期四\n"); break;
  15.         case 4: printf("星期五\n"); break;
  16.         case 5: printf("星期六\n"); break;
  17.         case 6: printf("星期日\n"); break;
  18.         }
  19. }

  20. int main()
  21. {
  22.         int year=0,month=0,day=0;
  23.         printf("请输入日期:\n格式为:1900,1,1\n");
  24.         char temp = '1';
  25.         while (temp != '0')
  26.         {       
  27.                 scanf("%d,%d,%d",&year,&month,&day);               
  28.                 scanf("%c",&temp);               
  29.                 CaculateWeekDay(year,month,day);               
  30.                 printf("输入0退出,其他继续:");               
  31.                 scanf("%c",&temp);       
  32.         }
  33.         return 0;
  34. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-12 21:54 , Processed in 0.051969 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表