题目要求:中国有句俗语叫“三天打鱼两天晒网”。若我很懒,从2000年1月1日起开始打鱼,日后的日子三天打鱼两天晒网。请随便输入一个日子,格式为****/**/**,判断我在这天是打鱼还是晒网。
1.1输入示例:
2001/3/1
1.2输出示例:
fishing
2.1输入示例:
2000/1/5
2.2输出示例:
sleeping
…………………………………………………………………………………………………………………
完成此题,看似困难,其实很简单。只需要判断输入的日期距离输出的日期过了几天,然后sumday取余5,看余数是几即可完成任务,但是,不要忘了判断闰年哦。
先输入年/月/日:
int year,mouth,day,i,j,sum=0;
scanf("%d/%d/%d",&year,&mouth,&day);
闰年判断语句:
for(i=2000;i<year;i++)
{
if((i%100!=0&&i%4==0)||(i%400==0))//判断输入年份的前一年是否为闰年
{
sum=sum+366;//闰年天数366
}
else
{
sum=sum+365;//不是闰年天数365
}
}
判断年数都之后要判断月份:
for(j=1;j<mouth;j++)
{
if((year%100!=0&&year%4==0)||(year%400==0))//闰年
{
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12)//三十一天
{
sum=sum+31;
}
else if(j==4||j==6||j==9||j==11)//三十天
{
sum=sum+30;
}
else if(j==2)//二十九天
{
sum=sum+29;
}
}
else//不是闰年
{
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12)//三十一天
{
sum=sum+31;
}
else if(j==4||j==6||j==9||j==11)//三十天
{
sum=sum+30;
}
else if(j==2)//二十八天
{
sum=sum+28;
}
}
}
年份和月份的和加完之后就剩下天数了:
sum=sum+day;
最后判断打鱼还是晒网:
if(sum%5==1||sum%5==2||sum%5==3)//三天打鱼
printf("fishing");
else if(sum%5==0||sum%5==4)//两天晒网
printf("sleeping");
return 0;程序完成。
完整代码:
#include<stdio.h>
int main()
{
int year,mouth,day,i,j,sum=0;
scanf("%d/%d/%d",&year,&mouth,&day);
for(i=2000;i<year;i++;
{
if((i%100!=0&&i%4==0)||(i%400==0))
{
sum=sum+366;
}
else
{
sum=sum+365;
}
}
for(j=1;j<mouth;j++)
{
if((year%100!=0&&year%4==0)||(year%400==0))
{
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12)
{
sum=sum+31;
}
else if(j==4||j==6||j==9||j==11)
{
sum=sum+30;
}
else if(j==2)
{
sum=sum+29;
}
}
else
{
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12)
{
sum=sum+31;
}
else if(j==4||j==6||j==9||j==11)
{
sum=sum+30;
}
else if(j==2)
{
sum=sum+28;
}
}
}
sum=sum+day;
if(sum%5==1||sum%5==2||sum%5==3)
printf("fishing");
else if(sum%5==0||sum%5==4)
printf("sleeping");
return 0;
}