三天打鱼、两天晒网

 1 /*
 2     问题描述:
 3     中国有句俗语叫“三天打鱼两天晒网”。
 4     某人从1990年1月1日起开始“三天打鱼两天晒网”
 5     问这个人在以后的某一天中是“打鱼"还是“晒网
 6 
 7     问题分析
 8     根据题意可以将解题过程分为三步:
 9     (1)计算从1990年1月1日开始至指定日期共有多少天;
10     (2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
11     (3)根据余数判断他是在“打鱼”还是在“晒网”;
12     若余数为1,2, 3,则他是在“打鱼”,否则是在“晒网”
13 
14     算法设计:
15     该算法为数值计算算法,要利用循环求出
16     指定日期距1990年1月1日的天数,并考虑
17     到循环过程中的闰年情况。闰年二月为29
18     天,平年二月为28天。
19 */
20 
21 #include "stdio.h"
22 
23 int Sun(int year,int month,int day)
24 {
25     int sum=0;
26     int months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
27     for (int i = 1990; i < year; i++)//循环年
28     {
29         if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)//如果是闰年就 把months数组的第1位改成29
30         {
31             months[1] = 29;
32         }
33         for (int j = 0; j <= 11; j++)
34         {
35             sum += months[j];//求出年份一共多少天
36         }
37     }
38     //循环月
39     for (int k = 0; k < month-1; k++)
40     {
41         sum += months[k];//年份的天数+月数的天数+天数
42     }
43     return sum+day; //返回1990年1月1日开始至指定日期共有多少天
44 
45 }
46 int main()
47 {
48     int year, month, day,days;
49     printf("请输入现在的年-月-日:");
50     scanf_s("%d-%d-%d",&year,&month,&day);//接受现在的时间
51     days = Sun(year,month,day);
52     if (days % 5 == 1 || days % 5 == 2 || days % 5 ==3)//由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
53     {
54         printf("打鱼
");
55     }
56     else
57     {
58         printf("晒网
");
59     }
60 }

作者(小权权)

原文地址:https://www.cnblogs.com/bingquan1/p/12353252.html