三天打渔两天晒网(4分)
题目内容:
中国有句俗语叫“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”,即工作三天,然后再休息两天。问这个人在以后的某一天中是在工作还是在休息。从键盘任意输入一天,编程判断他是在工作还是在休息,如果是在工作,则输出:He is working,如果是在休息,则输出:He is having a rest,如果输入的年份小于1990或者输入的月份和日期不合法,则输出:Invalid input。
输入格式: "%4d-%2d-%2d"
输出格式:
"Invalid input" 或
"He is having a rest" 或
"He is working"
输入样例1:
2014-12-22
输出样例1:
He is working
输入样例2:
2014-12-24
输出样例2:
He is having a rest
输入样例3:
2014-12-32
输出样例3:
Invalid input
注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!
#include<stdio.h>
int function(int year, int month,int day)
{
int sum;
switch(month)
{
case 1: sum=0;break;
case 2: sum=31;break;
case 3: sum=59;break;
case 4: sum=90;break;
case 5: sum=120;break;
case 6: sum=151;break;
case 7: sum=181;break;
case 8: sum=212;break;
case 9: sum=243;break;
case 10: sum=273;break;
case 11: sum=304;break;
case 12: sum=334;break;
}
sum+=day;
if(year%4==0 || year%100==0)
sum++;
return sum;
}
int main()
{
int year,month,day,days=0;
scanf("%4d-%2d-%2d",&year,&month,&day);
if(year<1990 || month>12 || month<1 || day<1 || day>31)
printf("Invalid input");
else
{
for(int i=1990;i<year;i++)
{
if(i%4==0 || i%100==0)
{
days++;
}
}
days=(year-1990)*365+days+function(year,month,day);
if(days%5==1 || days%5==2 || days%5==3)
printf("He is working");
else printf("He is having a rest");
}
}