【题目】
已知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