1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言根据日期判断星期几(使用基姆拉尔森计算公式)

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

时间:2024-05-10 05:48:08

相关推荐

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

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

算法如下:

基姆拉尔森计算公式

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

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

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

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

以公元元年为参考,公元元年1月1日为星期一</PRE><PRE>程序如下:

#include "stdio.h"

void CaculateWeekDay(int y,int m, int d)

{

if(m==1||m==2) {

m+=12;

y--;

}

int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;

switch(iWeek)

{

case 0: printf("星期一\n"); break;

case 1: printf("星期二\n"); break;

case 2: printf("星期三\n"); break;

case 3: printf("星期四\n"); break;

case 4: printf("星期五\n"); break;

case 5: printf("星期六\n"); break;

case 6: printf("星期日\n"); break;

}

}

void main()

{

int year=0,month=0,day=0;

printf("请输入日期:\n格式为:1900,1,1\n");

char temp = '1';

while (temp != '0')

{

scanf("%d,%d,%d",&amp;year,&amp;month,&amp;day);

scanf("%c",&amp;temp);

CaculateWeekDay(year,month,day);

printf("输入0退出,其他继续:");

scanf("%c",&amp;temp);

}

}

运行效果:

请输入日期:

格式为:1900,1,1

,4,29

星期二

输入0退出,其他继续:d

,1,1

星期二

输入0退出,其他继续:l

,8,8

星期五

输入0退出,其他继续:0

请按任意键继续. . .

编者注:用来算现在真实日期的星期是没有问题的。原理是根据已知公元1年1月1日的星期数来推算。如果在你的题目中约定了某天是星期几,你要注意那天的星期是否跟真实的星期相同,如果不同,需要考虑相差几天!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。