一、实例说明
如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 年1月1日以后的任意一天, 输出该渔夫是在打渔还是在晒网。
二、实现代码
#include<stdio.h>
int main()
{
int year,month,day;
int y=2010;
int sum=0;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//建立一个有平年各月份天数的数组
printf("请按照年月日的顺序输入日期,中间用空格隔开\n");
scanf("%d""%d""%d",&year,&month,&day);//输入日期
while((year<2010)||(month<1||month>12)||(month==2&&(year%4!=0||year%400!=0)&&day>=29)||(day>a[month]))
{
printf("输入日期错误,请重新输入\n");
printf("请按照年月日的顺序重新输入日期,中间用空格隔开\n");
scanf("%d""%d""%d",&year,&month,&day);
}
//判断输入日期是否正确
for(y;y<year;y++)//用此循环加上相差年份所隔的天数。
{
if((y%400==0)||(y%4==0&&y%100!=0))//判断此年份是否是闰年
{
sum+=366;
}//是闰年,则总天数加上366.
else
{
sum+=365;
}//是平年,总天数加上365
}
for(int m=1;m<month;m++)//用此循环加上所隔月份的总天数
{
sum+=a[m];
if(m==2&&((year%400==0)||(year%4==0&&year%100!=0)))
{
sum+=1;
}//判断月份是否为闰年2月,若是2月,则总天数加一。
}
sum+=day;//总天数加上日
if((sum%5==1)||(sum%5==2)||(sum%5==3))//用相隔总天数除以周期5,若余数为1,2,3,则此人打鱼。
{
printf("这个人今天打鱼\n");
}
else//否则,这个人晒网
{
printf("这个人今天晒网\n");
}
return 0;
}
三、实现结果