一个渔夫从2011.1.1开始每三天打一次渔,两天晒一次网(2011.1.1开始打渔),编程实现当输入2011.1.1后的任意一天,输出该渔夫是在打渔还是在晒网。
实现代下:码如
#include<stdio.h>
void main()
{
int i,j,year,month,day,c=0,d,e;
int n=0,m=0;
int a[]={31,28,31,30,31,30,31,31,30,31,30,31}, /*定义两个数组用来存储闰年和平年的十二个月的天数*/
b[]={31,29,31,30,31,30,31,31,30,31,30,31};
printf("请输入年月日:");
scanf("%d%d%d",&year,&month,&day);
if(year<2011) /*假定起始时间为2011.1.1*/
{
printf("请输入大于2011的年份!\n");
}
else
{
for(i=2011;i<year+1;i++) /*对介于2011年到你输入的年限之间的年份进行天数统计*/
if(((i%4==0)&&(i%100!=0))||(i%400==0)) /*闰年判断条件*/
{
n=n+1; /*用来统计从输入的时间到2011.1.1之间闰年的个数*/
for(j=0;j<month-1;j++)
c=c+a[j];
// printf("%d\n",c);
// printf("%d\n",n);
}
else
{
m=m+1; /*用来统计从输入的时间到2011.1.1之间平年的个数*/
for(j=0;j<month-1;j++)
c=c+b[j];
// printf("%d",m);
}
d=366*n+365*m;
c=c+day;
e=(d+c)%5; /*因为规定三天打渔,两天晒网,所以对5取余*/
if((e>=1)&&(e<=3)) /*介于1-3之间的为打渔,介于4-5之间的为晒网*/
printf(" 打渔\n");
else
printf("晒网\n");
// printf("%d",e);
}
}