#include <stdio.h>
typedef struct
{
int year;
int month;
int day;
int flag;
}date;
int days_in_month(int n)
{
int days;
switch(n)
{
case 1:case 3:case 5: case 7:case 8:case 10:case 12:
days=31;break;
case 4:case 6:case 9: case 11:
days=30;break;
case 2:
days=28;break;
default:
printf("月份不正确\n");
}
return days;
}
int isWeekend(date a)
{
int i;
int days=0;
int result;
for(i=0;i<a.month;i++)
days+=days_in_month(i);
days+=a.day-1;
result=(days+6)%7;
if(result==0||result==6)
return 1;
else
return 0;
}
int main()
{
date a[365];
date t;
FILE *fp=fopen("holidays2022.txt","rt");
int i=0,n,count=0;
int flag=0;
while(fscanf(fp,"%d-%d-%d %d",&a[i].year,&a[i].month,&a[i].day,&a[i].flag)!=EOF)
i++;
n=i;
for(i=0;i<n;i++)
{
if(a[i].flag==0)
count++;
}
printf("2022年共有%d个节假日\n",count);
printf("请输入2022年的一个日期(y-m-d):\n");
scanf("%d-%d-%d",&t.year,&t.month,&t.day);
for(i=0;i<n;i++)
{
if(t.year==a[i].year && t.month==a[i].month && t.day==a[i].date)
{
flag=1;
t.flag=a[i].flag;
}
}
if(flag==1)
{
if(t.flag==0)
printf("节假日\n");
else
printf("工作日\n");
}
else
{
if(isWeekend(t))
printf("休息日\n");
else
printf("工作日\n");
}
return 0;
}