如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网。
#include <stdio.h>
int lep(int year) //判断是否为闰年,或者平年
{
if(year%4==0&&year%100!=0||year%400==0) //判断闰年条件
return 1;
else
return 0;
}
int num (int year,int month,int day) //返回输入年份距离2011年1月1日共有多少天
{
int i,j,k,sum=0;
int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; //year为闰年是,每个月的天数
int b[]={31,29,31,30,31,30,31,31,30,31,30,31}; //year为平年时,每个月的天数
if(lep(year))
for(i=0;i<month-1;i++){
sum+=b[j]; //累加十二个月份日期
}
else
for(i=0;i<month-1;i++){
sum+=a[j]; //累加十二个月份日期
}
for(j=2011;j<year;j++)
{
if(lep(j))
sum+=366;
else
sum+=365;
}
sum+=day; //前面年月都累加了,这里再把输入的日给累加
}
int main(){
int sum,year,month,day;
printf("请输入年月日,并以空格隔开:\n");
scanf("%d%d%d",&year,&month,&day);
sum=num(year,month,day);
if((sum%5<4)&&(sum%5>0))
printf("%d年%d月%d日,他在打渔",year,month,day);
else
printf("%d年%d月%d日,他在晒网",year,month,day);
return 0;
}
/*
在dev中输出结果为:
--------------------------------
请输入年月日,并以空格隔开:
2019 4 30
2019年4月30日,他在晒网
--------------------------------
*/