实例说明
如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 年1月1日以后的任意一天, 输出该渔夫是在打渔还是在晒网。
实现代码
#include <stdio.h>
int leap(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else
return 0;
}
int number (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(leap(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(leap(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=number(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;
}
实现结果