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("打鱼\n"); 55 } 56 else 57 { 58 printf("晒网\n"); 59 } 60 }
作者(小权权)
原文地址:https://www.cnblogs.com/bingquan1/p/12353252.html
时间: 2024-11-12 11:01:17