一道C语言题--计算假期
题目内容:
十月一日是伟大祖国的生日,每年都会安排一个长假,一般情况下,有这样一个规律,即:它总是七天,并总是和一个周末相邻。例如:如果十月一日是周一到周五的某天,那么假期将从周一开始,直到与它后续的周末相连组成七天(前一个周末不放假)。如果十月一日是周六或者是周日中的某天,那么这个周末,从周六开始,和接下来的周一至周五组成七天(后续的周末不放假)。
注:
1、 这里的周末包括周六和周日两天;
2、 这里的算法与实际情况不一定相符。
题目要求:
给定一个年份(>1900),要求输出放假的起止日期。
输入格式:
2018[回车]
输出格式:
10.01-10.07[回车]
代码:
#include <stdio.h>
int main() {
int y, m, d, w;
m=10;
d=1;
if(scanf("%d", &y))
{if(3 > m)
{m+= 12;
y--;}
w=((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1)%7;
if(w==1||w==6)
printf("10.01-10.07\n");
if(w==2||w==0)
printf("09.30-10.06\n");
if(w==3)
printf("09.29-10.05\n");
if(w==4)
printf("09.28-10.04\n");
if(w==5)
printf("09.27-10.03\n");
}
return 0;
}