打渔还是晒网流程图及代码

发布时间 2023-04-19 20:26:58作者: NEETV

问题描述:

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

设计思路:

  1. 定义两个数组分别存入闰年和平年的月份。
  2. 首先1990年到输入年份每一年的天数相加(闰年多加一天),之后输入年份的月份相加(闰年2月29天),最后加年份。
  3. 将总天数除以5,余数为1、2、3时是打渔,0、4时是晒网。

流程图:

 

 

代码实现:

#include <iostream>

using namespace std;

int run[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };

int ping[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };

 

int main()

{

    int y, m, d;

    cin >> y >> m >> d;

    int sum = d;

    for (int i = 1990; i <= y; i++)

    {

         if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))

             sum += 366;

         else

             sum += 365;

    }

    for (int i = 1; i <= m; i++)

         if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))

             sum += run[i];

         else

             sum += ping[i];

    if (sum % 5 <= 3 && sum % 5 > 0)

         cout << "打鱼";

    else

         cout << "晒网";

}