打渔晒网问题
Posted 糖小俊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打渔晒网问题相关的知识,希望对你有一定的参考价值。
题目:如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日以后的任意一天,输出该渔夫是在打渔还是在晒网。
#include <stdio.h> int leap(int a) { if(a%4==0&&a%100!=0||a%400==0) //判断闰年 return 1; else return 0; } int number(int year,int month,int day) { int i,j,k,sum; int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int b[12]={31,29,31,30,31,30,31,31,30,31,30,31}; if(leap(year)==1) for(i=0;i<month-1;i++) sum+=b[i]; //闰年,累加数组b前m-1个月的天数 else for(j=0;j<month-1;j++) sum+=a[j]; //平年,累加数组a前m-1个月的天数 for(k=2011;k<year;k++) if(leap(k)==1) sum+=366; //2011年到输入的年份是闰年的加366 else sum+=365; //2011年到输入的年份是平年的加365 sum+=day; //将前面累加的结果加上日期,求出总天数 return sum; } int main() { int year,month,day,n; printf("请输入年月日\n"); scanf("%d%d%d",&year,&month,&day); n=number(year,month,day); if((n%5)<=3&&(n%5)>0) //余数为1或2或3时说明在打渔,其他则在晒网 printf("%d-%d-%d 打渔\n",year,month,day ); else printf("%d-%d-%d 晒网\n",year,month,day ); return 0; }
结果
E:\c++>a 请输入年月日 2011 5 5 2011-5-5 晒网 E:\c++> E:\c++>a 请输入年月日 2012 5 5 2012-5-5 打渔
以上是关于打渔晒网问题的主要内容,如果未能解决你的问题,请参考以下文章