打卡 c语言趣味编程 打鱼还是晒网

中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的以后的某一天中是打鱼还是晒网。

设计思路:1、定义一个函数,该函数接收两个参数:一个是起始日期,另一个是未来的某一天。

     2、计算起始日期和未来的某一天之间相隔的天数。

        3、计算从起始日期到未来某一天经过了多少个“三天打鱼两天晒网”的周期。可以使用取余(%)运算符来计算。

      4、根据剩余的天数确定这个人在未来某一天是打鱼还是晒网。如果剩余天数小于等于3,那么这个人在未来某一天就是在打鱼;否则这个人在未来某一天就是在晒网。

流程图:

代码实现:

复制代码
1 #include <iostream>
 2 using namespace std;
 3 class Date
 4 {
 5 public:
 6     int year;
 7     int month;
 8     int day;
 9 };
10 bool runnian(Date&d)
11 {
12     if ((d.year % 4 == 0 && d.year % 100 != 0) || d.year % 400 == 0)
13     {
14         return true;
15     }
16     else
17     {
18         return false;
19     }
20 }
21 bool runnian(int x)
22 {
23     if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0)
24     {
25         return true;
26     }
27     else
28     {
29         return false;
30     }
31 }
32 int main()
33 {
34     Date d1;
35     int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
36     int count = 0;  
37     cin >> d1.year;
38     cin >> d1.month;
39     cin >> d1.day;
40     for (int i = 1990; i < d1.year; i++)
41     {
42         if (runnian(i))
43         {
44             count = count + 366;
45         }
46         else
47         {
48             count = count + 365;
49         }
50     }
51     for (int i = 0; i < d1.month; i++)
52     {
53         count = count + a[i];
54     }
55     count = count + d1.day;
56     if (count % 5 == 1 || count % 5 == 2 || count % 5 == 3)
57     {
58         cout << "今天打鱼" << endl;
59     }
60     else
61     {
62         cout << "今天晒网" << endl;
63     }
64 
65     return 0;
复制代码

 

posted @   起名字真难_qmz  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示