已知2015年的元旦是星期四,求出2015年的任何一个日期是星期几?c++

2021年8月23日 | 分类: 【编程】

【题目】

已知2015年的元旦是星期四,求出2015年的任何一个日期是星期几?

【解析】

#include <cstdio>
//判断是否为闰年
int IsLeepYear(int year)
{
if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) )
return 1;
else return 0;
}
//计算为星期几的函数
void CountWeekday(int firstWeekDay, int year, int month, int day)
{
int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31,30, 31};//此处修改
int sum = 0, i, res;
if(IsLeepYear(year))
monthDays[2] = 29;

for(i = 0; i < month-1; i++)
sum += monthDays[i];

sum += day;
--sum;
res = sum % 7 + firstWeekDay;
res = res%7; //此处为修改

printf("该日期为星期:%d\n", res);
}
int main()
{
int firstWeekDay, year, month, day;
printf("请输入元旦星期几, 年份, 月份, 日,以空格间隔输入:\n");
scanf("%d %d %d %d", &firstWeekDay, &year, &month, &day);
CountWeekday(firstWeekDay, year, month, day);
return 0;
}

为什么要–sum?因为计算的时候,本身的那天也算一天,如果不减掉,那就多算了一天。

参考:https://zhidao.baidu.com/question/511263335.html?qbl=relate_question_1