/*
* 任意输入一个年份 已知1900/1/1是星期一,打印该年的黑色星期五
* 黑色星期五:某年某月13号为星期五
*/
#include <stdio.h>
//求某年某月的天数
int monthOfDay(int year,int month);
int main(void)
{
int i,month,year,days=0;
printf("input a year:");
scanf("%d",&year);
if(year<1900)
{
printf("year must greater 1900.\n");
return 1;
}
//1900/1/1 -- year days
for(i=1900;i<year;i++)
{
if(i%400==0 || (i%4==0 && i%100!=0))//闰年
{
days+=366;
}
else
{
days+=365;
}
}
//1900/1/1 --- year/1/13 days
days+=13;
for(month=1;month<=12;month++)
{
if(days%7==5)
{
printf("%d/%02d/13 是黑色星期五.\n",year,month);
}
//到下月13号的总天数
days+=monthOfDay(year,month);
}
return 0;
}
int monthOfDay(int year,int month)
{
int flag;
flag=(year%400==0 || (year%4==0 && year%100!=0));
switch(month){
case 1 :return 31;
case 2 :return flag?29:28;
case 3 :return 31;
case 4 :return 30;
case 5 :return 31;
case 6 :return 30;
case 7 :return 31;
case 8 :return 31;
case 9 :return 30;
case 10:return 31;
case 11:return 30;
case 12:return 31;
}
}