//三天打鱼两天晒网
#include<stdio.h>
void main()
{
int sum=0,s=0,date,month,year,d,m,y; // 必须初始化,否则变量就会变为系统给的随机值
printf("请输入年月日:\n");
scanf("%d,%d,%d",&year,&month,&date);
if(year%400==0 || (year%4==0 && year%100!=0))
sum+=366;
else
sum+=365;
for(m=1;m<=month;m++) //计算月数
{
switch(m)
{ case1:case3:case5:case7:case8:case10:case12:d=31;break;
case4:case6:case9:case11:d=30;break;
case2:
{
if(year%400==0 || (year%4==0 && year%100!=0))
d=29;
else
d=28; //判断闰二月
}
break;
default:d=0;
}
s+=d;
}
sum=sum-s+date;
}
if(sum%5==0||sum%5==4)
printf("他在晒网!\n");
else
printf("他在打渔!\n");
#include<stdio.h>
void main()
{
int sum=0,s=0,date,month,year,d,m,y; // 必须初始化,否则变量就会变为系统给的随机值
printf("请输入年月日:\n");
scanf("%d,%d,%d",&year,&month,&date);
for(y=1990;y<=year;y++) //是否闰年
{if(year%400==0 || (year%4==0 && year%100!=0))
sum+=366;
else
sum+=365;
for(m=1;m<=month;m++) //计算月数
{
switch(m)
{ case1:case3:case5:case7:case8:case10:case12:d=31;break;
case4:case6:case9:case11:d=30;break;
case2:
{
if(year%400==0 || (year%4==0 && year%100!=0))
d=29;
else
d=28; //判断闰二月
}
break;
default:d=0;
}
s+=d;
}
sum=sum-s+date;
}
if(sum%5==0||sum%5==4)
printf("他在晒网!\n");
else
printf("他在打渔!\n");
}
思路:
在这个问题,计算出到目前为止的总天数sum,sum%5既能得出打渔还是晒网。
1. 计算每个月的天数,若日期为2月5号,就不用计算二月是否是闰二月也就不用加上二月份的天数,考虑这个问题很重要;
2. 计算月份数,若日期为6月26号,sum=5*每个月的天数+26;
3. 计算年数。