题目描述:
牛牛有一个学习计划,他计划在 y 年 m 月 d 日开始学习,但在之前他是绝不会开始学习的,但是他一旦开始学习就不会停下来,请你判断 y1 年 m1 月 d1 日牛牛应该学习吗。
输入描述:
第一行输入 y ,m ,d ,即牛牛计划开始学习的时间。
第二行输入 y1,m1,d1,即询问的时间。
输出描述:
请你判断牛牛是否开始学习。如果是则输出 yes ,否则输出 no
解题思路:
至少有2种解题方法
- 将所有天数加起来(1y == 365, 1m == 30, 1d = 1),看是否大于计划天数
- 直接比较年月日:年月大 -> 在学习计划。年月小 ->不在学习计划。年月相等 -> 进入比较日环节(日环节与年月基本相等,此处不再赘述)。
代码实现:
1.将所有天数加起来,比较天数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//计划的时间
int y_plan = 0;
int m_plan = 0;
int d_plan = 0;
int sum_plan = 0;
//询问的时间
int y = 0;
int m = 0;
int d = 0;
int sum = 0;
scanf("%d %d %d", &y_plan, &m_plan, &d_plan);
scanf("%d %d %d", &y, &m, &d);
//计算天数
sum_plan = y_plan * 365 + m_plan * 30 + d_plan;
sum = y * 365 + m * 30 + d;
//大于等于计划时间 -> 在学习时间内
if (sum >= sum_plan)
{
printf("yes\n");
}
//小于计划时间 -> 不在学习时间内
else
{
printf("no\n");
}
return 0;
}
2.直接比较年月日
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//计划的时间
int y_plan = 0;
int m_plan = 0;
int d_plan = 0;
//询问的时间
int y = 0;
int m = 0;
int d = 0;
//学习 -> 1
//不学习 -> 0
int flag = 0;
scanf("%d %d %d", &y_plan, &m_plan, &d_plan);
scanf("%d %d %d", &y, &m, &d);
//比较年与月
//
//年或月大时,直接判断为是学习时间
if (y > y_plan || m > m_plan)
{
flag = 1;
}
//比较日
//
//年或月大相等时,进入判断日阶段
else if (y == y_plan && m == m_plan && d >= d_plan)
{
flag = 1;
}
if (1 == flag)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}