富阳雍柏荟招聘:高手帮我看看这是怎么回事?(算法)

来源:百度文库 编辑:高考问答 时间:2024/04/29 03:08:24
万年历怎么知道一年的一月一日是星期几啊?
想知道这个算法
我这里有一个,可是看不懂啊55555555555555
long int f (int year, int month)
{/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/
if(month<3) return year-1;
else return year;
}
long int g(int month)
{/*g(月)=月+13,如月<3;否则,g(月)=月+1*/
if(month<3) return month+13;
else return month+1;
}

long int n(int year,int month, int day)
{
/*n=1461*f(年、月)/4+153*g(月)/5+日*/
return 1461l*f(year,month)4+153l*g(month)/5+day;
}
int w(int year,int month,int day)
{
/*w=(n-621049)%7(0<=w<7)*/
return (int)((n(year,month,day)%7-621049l%7+7)%7;
}

以上的日期当然是1月1日了,年是要另外输入的
名位大侠帮帮忙啊!!!!
谢先了!!!!!!!!!!
问题补充:忘了说了,程序是从int w(int year,int month,int day) 函数先开始读的
那个l在n函数中是怎么用的啊?
小弟是初学者啊!!!!!

int DayOfWeek(int year, int month, int day)
{
if(month <= 2)
{
year -= 1;
month += 12;
}

int week = (day+((8+13*month)/5)+(year+year/4-year/100+year/400))%7;
return week;
}

L 表示长整型常量

比如说在 C 中,如果你写 1461,那么系统会默认把它认为 int 型,如果要让系统把它视为 long 型,那么就要在后面写上字母 L(大小写均可),即 1461L。