废话不多说上代码
int monthOfDay(int year, int month)
{
int 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;
}
return 0;
}
int main()
{
printf("**************************************\n");
printf("********判断一年中的黑色星期五********\n");
printf("**************************************\n");
while (1)
{
printf("********请输入一个年份*********\n");
int i, year = 0, month, day = 0;
scanf(" %d", &year);
if (year < 1998)
{
printf("year must greater 1999!\n");
}
else
{
for (i = 1998; i < year; i++)
{
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)//判断闰年
{
day += 366;
}
else
day += 365;
}
day += 13;//一月十三日
for (month = 1; month <= 12; month++)
{
if (day % 7 == 2)
{
printf(" %d / %d / 13\n", year, month);
}
day += monthOfDay(year, month);
}
}
}
return 0;
}
需要注意的地方:
- 闰年的定义:四年一闰,百年不闰,四百年再闰。
- 判断用i,而不是year。我开始就做错了
for (i = 1998; i < year; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)//判断闰年 { day += 366; } else day += 365; }
总结一下,学习编程已经差不多一个月了,发现这条路还是很难走的,但我还是会迎难而上,尽快从小白走向大佬。哈哈哈,记录~~~·