|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【问题描述】
某渔人从y年a月b日起,实行“三天打鱼两天晒网”,判断同年c月d日(c>=a,若c==a,则d>=b)他在打鱼(输出1)还是在晒网(输出0)。y、a、b和c、d从键盘输入,格式为y-m-d和m-d。要求编写函数:
⑴ int leap( int y );
y年为闰年,则返回1,否则返回0。
⑵ int days( int y, int m, int d );
返回y年m月d日是该年的第几天。
【输入形式】
从键盘输入开始日期,格式为:年-月-日。
从键盘输入要判断的日期,格式为:月-日。
【输出形式】
输出1(表示打鱼)或0(表示晒网)。
【样例输入】
2008-2-10
4-29
【样例输出】
0
#include<stdio.h>
int leap(int); //判断是否闰年 i=1 为闰年, i=0 为平年。
int days(int, int, int); //计算当前日期,是该年的第几天。
int i;
int leap(int y)
{
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
{
i = 1;
}
else
{
i = 0;
}
return i;
}
int days(int y, int m, int d)
{
int day = 0;
if (i == 1)
{
int a[12] = { 0,31,60,91,121,152,182,213,244,274,305,335 };
int j = 0;
for (j; j <= m; j++)
{
if (m == j)
{
day = d + a[j];
}
}
}
if (i == 0)
{
int a[12] = { 0,31,59,90,120,151,181,212,243,273,304,334 };
int j = 0;
for (j; j <= m; j++)
{
if (m == j)
{
day = d + a[j];
}
}
}
return day;
}
int main(void)
{
int year, a, b; //定义起始日期的年月日。
int c, d; // 定义现在的月,日。
int max, mid; //max=开始日期是这一年的第几天。 mid=当前日期是这一年的第几天,两个相减为从开始日期到现在的天数。
int z; //max与mid相减。从开始到现在的天数。
printf("输入开始日期(例如年-月-日):\n");
scanf_s("%d-%d-%d", &year, &a, &b);
printf("输入判断日期(例如月-日):\n");
scanf_s("%d-%d", &c, &d); // c>=a, if c==a, { d>=b }
leap(year);
max=days(year, a, b);
mid=days(year, c, d);
z = max - mid;
if (z % 5 == 1 || z % 5 == 2 || z % 5 == 3)
{
printf("打鱼!"); //这里直接打印打鱼。
}
else if (z % 5 == 0 || z % 5 == 4)
{
printf("晒网!"); //这里直接打印晒网。
}
return 0;
}
|
|