问题描述:
如果一渔夫两从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 Allday(int y, int m, int d)//返回距离2011年1月1号总共多少天
{
static int Y = 2011, M = 1, D = 1;
int mun = 0,temp;
int a[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//闰年每月天数
int a2[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//平年每月天数
temp = y - Y;
for (int i = 0; i < temp; i++)
{
if (leap(Y + 1) ==1 )
{
mun += 366;
}
else
{
mun += 365;
}
}
if (leap(y) == 1)
{
for (int i = 0; i < m-1; i++)//是求前m-1个月的总天数
{
mun += a[i];
}
}
else
{
for (int i = 0; i < m-1; i++)
{
mun += a2[i];
}
}
return mun + d;
}
int main()
{
printf("请输入年月日!\n例如2012 1 1\n");
int y, m, d,tempp;
scanf_s("%d %d %d", &y, &m, &d);
tempp=Allday(y, m, d);
if (tempp % 5 <= 3 && tempp % 5>0)//注意判断条件,只有余数是1,2,3的时候渔夫才出去打鱼。余数有可能等于0。
{
printf("渔夫很勤劳,打鱼去了!!!\n");
}
else
{
printf("渔夫休息了,在家晒网 !!!\n");
}
return 0;
}