/*
中国有句俗语叫“三天打鱼两天晒网”,某人从90年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天中是在“打渔”,还是在“晒网”.
*/
#include <stdio.h>
int panDuanRunNian ( int year);
int main(int argc, const char * argv[])
{
printf("Enter year/month/day:");
int year, b, c;
scanf("%d%d%d",&year,&b,&c);
int d = 0;
int a = panDuanRunNian(year);
int arr[2][12]=
{{31,29,31,30,31,30,31,31,30,31,30,31},
{31,28,31,30,31,30,31,31,30,31,30,31}};
for (int i = 1900; i < year - 1900; i++) {
if (panDuanRunNian(i)==1) d+=366;
else d+=365;
}
for (int i = 1; i < b; i++) {
if (a == 1) d+=arr[0][i-1];
else d+=arr[1][i-1];
}
if ((d+c)%5 == 0||(d+c)%5 == 4) printf("He is sleeping.\n");
else
printf("He is fishing.\n");
return 0;
}
int panDuanRunNian ( int year)
{
return (year%400==0||(year%4==0&&year%100!=0));
}
下面是之前的解法,忘记什么时候了
#include <stdio.h>
int main()
{
int y,m,d;//年月日年月日年月日
scanf("%4d-%2d-%2d",&y,&m,&d);
int arr[2][12] = {
{31,29,31,30,31,30,31,31,30,31,30,31},
{31,28,31,30,31,30,31,31,30,31,30,31}
};
//不满足条件的日期先去掉
if(y < 1990||m>12||d>31)
{
printf("Invalid input");
return 0;
}
int days = 0;
//year
for(int i = 1990; i< y;i++){
if((i%400 == 0) || ((i%4 == 0 )&&(i%100 != 0)) )//闰年366
{
days += 366;
}
else
{
days += 365;
}
}
//month
if(y%400 == 0 || ((y%4 == 0 )&&(y%100 == 0)) )
for(int i = 0;i < m-1;i++) days+=arr[0][i];
else
for(int i = 0;i < m-1;i++) days+=arr[1][i];
//day
days += d;
if(days % 5 <= 3 && days % 5 != 0 )
printf("He is working");
else
printf("He is having a rest");
return 0;
}