题目内容:
中国有句俗语叫“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”,即工作三天,然后再休息两天。问这个人在以后的某一天中是在工作还是在休息。从键盘任意输入一天,编程判断他是在工作还是在休息,如果是在工作,则输出:He is working,如果是在休息,则输出:He is having a rest,如果输入的年份小于1990或者输入的月份和日期不合法,则输出:Invalid input。
输入格式: "M----"
输出格式:
"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
注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!
时间限制:500ms内存限制:32000kb #include <stdio.h> main() { int year,month,day,syear,countLeap=0,i,dday,loss1mday,Sumday,judge; scanf("M----",&year,&month,&day); if(year<1990||month<1||month>13||day<1||day>31) printf("Invalid input"); else { syear=year-1990-1; for(i=0;i<(year-1990-1);i++) { if((1990+i)%4 == 0) countLeap++; } dday=365*syear+countLeap; if(year%4 == 0) { switch(month-1) { case 1: loss1mday=31; break; case 2: loss1mday=31+29; break; case 3: loss1mday=31+29+31;break; case 4: loss1mday=31+29+31+30; break; case 5: loss1mday=31+29+31+30+31; break; case 6: loss1mday=31+29+31+30+31+30; break; case 7: loss1mday=31+29+31+30+31+30+31; break; case 8: loss1mday=31+29+31+30+31+30+31+31;break; case 9: loss1mday=31+29+31+30+31+30+31+31+30;break; case 10: loss1mday=31+29+31+30+31+30+31+31+30+31;break; case 11: loss1mday=31+29+31+30+31+30+31+31+30+31+30;break; } } else switch(month-1) { case 1: loss1mday=31; break; case 2: loss1mday=31+28; break; case 3: loss1mday=31+29+31;break; case 4: loss1mday=31+29+31+30; break; case 5: loss1mday=31+29+31+30+31; break; case 6: loss1mday=31+29+31+30+31+30; break; case 7: loss1mday=31+29+31+30+31+30+31; break; case 8: loss1mday=31+29+31+30+31+30+31+31;break; case 9: loss1mday=31+29+31+30+31+30+31+31+30;break; case 10: loss1mday=31+29+31+30+31+30+31+31+30+31;break; case 11: loss1mday=31+29+31+30+31+30+31+31+30+31+30;break; } Sumday=dday+loss1mday+day; judge=Sumday%5; switch(judge) { case 1: case 2: case 3:printf("He is working");break; case 4: case 0:printf("He is having a rest");break; } } }