1 //当天的前一年离1990年有几天,再加上当年的天数,余数 1 2 3则打鱼,否则晒网
2 #include <iostream>
3 #include <cstring>
4 using namespace std;
5
6 const int a[2][13] = {0,31,28,31,30,31,30,31,31,30,31,30,31,
7 0,31,29,31,30,31,30,31,31,30,31,30,31} ;
8
9 typedef struct Node
10 {
11 int year,month,day;
12 }Node;
13
14 int is_leap(int year)
15 {
16 if(year%4==0&&year%100!=0||year%400 == 0)//符合短路表达式规则
17 return 1;
18 return 0;
19 }
20
21 int sum_days(Node today)
22 {
23 int sum = 0;
24 int i,j,k;
25 for(i = 1990; i<today.year; i++)//没加等号,当天的前一年离1990年有几天,再加上当年的天数
26 {
27 int flag = is_leap(i);
28 if(flag)
29 sum += 366;
30 else
31 sum += 365;
32 }
33 int tag = is_leap(today.year);
34 for(i=1; i<today.month; i++)
35 sum += a[tag][i];
36 sum += today.day;//加上当月的天数 ,即便输入1990 1 1日, 则sum值为1,所以余数为1 2 3时打鱼,不是 0 1 2
37 return sum;
38 }
39
40 int main()
41 {
42 int i,j,k;
43 Node today;
44 cout<<"Input date:"<<endl;
45 while(cin>>today.year>>today.month>>today.day)
46 {
47 int sum = sum_days(today);
48 int mod = sum%5;
49 if(mod>0&&mod<4)
50 cout<<"打鱼"<<endl;
51 else
52 cout<<"晒网"<<endl;
53 }
54 return 0;
55 }
56
57
58
59