
没看懂两位的代码
有个网上看的代码是这样的
#include <stdio.h>
int getWeekOfFirstDay(int year)
{
//已知1998年1月1日是星期四
int i=1998,week=3;
int days=0;
for(i=1998;i<year;i++)
{
if(i%400==0||(i%4==0&&i%100!=0))
days+=366;
else
days+=365;
}
return (days+week)%7;
}
void printBlackFridayTimes(int year)
{
int day[2][12]={{31,28,31,30,31,30,31,31,30,31,30},{31,29,31,30,31,30,31,31,30,31,30}};
int week=getWeekOfFirstDay(year),flag=year%400==0||(year%4==0&&year%100!=0)?1:0;
int times=0,i,days=0;
//遍历12个月
for(i=0;i<12;i++)
{
//判断每个月13号是否是黑色星期五
if((days+12+week)%7==4)
times++;
days+=day[flag][i];
}
printf("%d\n",times);
return ;
}
main()
{
int year;
scanf("%d",&year);
printBlackFridayTimes(year);
return 0;
}
getWeekOfFirstDa函数里的week为什么要等于3
返回值为什么是(days+week)%7, 还有这个 if((days+12+week)%7==4)判断是不是黑色星期五这个式子是怎么推出来的