|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|