C语言 万年历中 星期差的计算问题/*** 该月以前的月所引起的 " 星期差 " ***/ switch (month) { case 1:dm=0; month=31; break; /*** month 在此存放该月天数 ***/ case 2:dm=3; month=d==1?29:28; break;
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 00:55:48
C语言 万年历中 星期差的计算问题/*** 该月以前的月所引起的 " 星期差 " ***/ switch (month) { case 1:dm=0; month=31; break; /*** month 在此存放该月天数 ***/ case 2:dm=3; month=d==1?29:28; break;
C语言 万年历中 星期差的计算问题
/*** 该月以前的月所引起的 " 星期差 " ***/
switch (month)
{
case 1:dm=0; month=31; break; /*** month 在此存放该月天数 ***/
case 2:dm=3; month=d==1?29:28; break;
case 3:dm=3+m2; month=31; break;
case 4:dm=6+m2; month=30; break;
case 5:dm=1+m2; month=31; break;
case 6:dm=4+m2; month=30; break;
case 7:dm=6+m2; month=31; break;
case 8:dm=2+m2; month=31; break;
case 9:dm=5+m2; month=30; break;
case 10:dm=m2; month=31; break;
case 11:dm=3+m2; month=30; break;
case 12:dm=5+m2; month=31; break;
}
以2000.1.1星期六为基准 2001.5.4号和他相聚多少个星期差嘛
C语言 万年历中 星期差的计算问题/*** 该月以前的月所引起的 " 星期差 " ***/ switch (month) { case 1:dm=0; month=31; break; /*** month 在此存放该月天数 ***/ case 2:dm=3; month=d==1?29:28; break;
这个星期差指的是每个月的1日的星期几与这年1月1日星期几间的差,不是跨年计算的,是同一年的月份的第1天的星期几和1月1日的差.
程序里有:
case 5:dm=1+m2; month=31; break;
意思就是说如果1月1日是星期六,那么同年5月1日就是星期六+(1+m2).
如果是闰年,m2=1,否则m2=0.
2000年是闰年,所以2000年5月1日就是 星期六+(1+1)=星期一.
每月第n日就是第1日的(星期几+(n-1))%7的值了:
所以,5月4日就是 星期(六+(1+1)+(4-1))%7=4,星期四.