C/C++程序题之三天打渔两天晒网

来源:互联网 发布:js添加事件 编辑:程序博客网 时间:2024/06/05 17:35

俗话说三天打渔两天晒网,某人从2010年1月1日开始打三天鱼,然后晒两天网,然后再打三天鱼,再晒两天网,周而复始,输入任意一天,求该天是打渔还是晒网 


#include <stdlib.h>// 功能:从2010年1月1日起判断输入时期是否为打渔// 输入: unsigned int  nYear 输入日期的年, unsigned int nMonth 输入日期的月,  unsigned int nDay 输入日期的日// 输出:无// 返回: 1 表示该天为打渔,0表示该天为晒网unsigned int  IsTodayFishing (unsigned int  nYear, unsigned int nMonth, unsigned int nDay){if(nYear < 2010 || nMonth < 1 || nDay < 1)return -1;unsigned int days = (nYear - 2010) * 365;for(unsigned int year = 2010; year < nYear; year++)//从2010年起,判断期间有几个闰年{if(year%4 == 0 && year%100 != 0 || year%400 == 0){days++;//闰年一次天数加1}}//判断当前年过了多少天unsigned int Day[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};if(nYear%4 == 0 && nYear%100 != 0 || nYear%400 == 0)Day[2] = 29;for(unsigned int i = 0; i < nMonth; i++){days += Day[i];}days += nDay;//共有多少天if(days%5 >= 1 && days%5 <= 3)return 1;return 0;}


0 0