学C语言的进来帮我看看

来源:百度知道 编辑:UC知道 时间:2024/05/17 05:14:31
/*w=(n-621049)%7(0<=w<7)*/ return (int)((n(year,month,day)%7-621049l%7+7)%7
这个是编日历的一个公式,请问那个“621049”是什么意思,怎么来的
还有,能解释一下这个公式的含义吗?!
谢谢

int f(int year, int month)
{
if (year<3) return -1;
else return year;
}

int g(int month)
{
if(month<3) return month+13;
else return month+1;
}

int year,month, day;
N = 1461 * f(year,month) / 4 + 153 * g(month) / 5 + day;
year = 1700;
month = 3;
day = 2;

N=1461 * f(1700,3) / 4 + 153 * g(3) / 5 + 2;
 =1461*1700/4 + 153*4/5+2
 =620925+122+2
 =621049

1700年3月2日星期日(0-星期日)

621049 这个值用于计算星期,理论上可以用其他的任何一个日期的N值代替

下面的公式能用来计算两个日期之间的天数.首先分别算出各日期的N值,然后两个日期的N值相减,其差即为两个日期之间的天数.计算日期N值的方法如下:

N=1461*f(年,月)/4+153*g(月)/5+日;
其中
f(年,月)=-1,如月<3;否则,f(年,月)=年.
g(月)=月+13,如月<3;否则,g(月)=月+1.
又,如果计算下式
(N-621049)%7
得到0到6范围内的数.该数代表一周中相应的一天,即星期日到星期六.以上算式中的运算都是整数运算.

n(year,month,day)

给出n()函数的定义,以及完整的程序。