代码原理同上一期三天打鱼两天晒网一致。
#include<stdio.h>
int runnian(int year)
{
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return 1;
else
return 0;
}
int yeardays(int sy,int ey)
{ //统计年的天数 ,sy是开始年份,ey是结束年份
int i,days=0;
for (i = sy; i < ey; i++)
{
days += 365;
if (runnian(i))
{
days += 1;
}
}
return days;
}
int monthdays(int year,int month)
{ //统计月份天数
//循环判断每一个月13日
int i,days=0;
for (i = 1; i < month; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10)
{
days += 31;
}
else if ( i == 2)
{
days += 28;
if(runnian(year))
{
days += 1;
}
}
else
{
days += 30;
}
}
return days;
}
int main(void)
{
printf("输入9999结束死循环\n");
while(1)
{
int days=13,i,year,day;
printf("请输入1900年之后的年份:");
scanf("%d",&year);
if(year==9999)
{
break;
}
days+=yeardays(1900,year);
//printf(" days :%d\n",days);
for (i = 1; i <=12; i++)
{
day = days + monthdays(year,i);
if (day % 7 == 5)
{
printf("%d月13日是黑色星期五!\n", i);
}
}
}
return 0;
}