目前主要分为三个专栏,后续还会添加:
感谢阅读!
初来乍到,如有错误请指出,感谢!
描述
牛牛有一个学习计划,他计划在 y 年 m 月 d 日开始学习,但在之前他是绝不会开始学习的,但是他一旦开始学习就不会停下来,请你判断 y1 年 m1 月 d1 日牛牛应该学习吗。
输入描述:
第一行输入 y ,m ,d ,即牛牛计划开始学习的时间。
第二行输入 y1,m1,d1,即询问的时间。
输出描述:
请你判断牛牛是否开始学习。如果是则输出 yes ,否则输出 no
思路 :
要输入两次数据
定义两组变量
然后要思考什么时候要执行计划,什么时候不执行计划
我想的就太死板,没有想到灵活的方法
只知道用&& 和 ||
其他的我都没想到
一开始想的就是这种......
后来测试怎么做都不对
看评论区里说,只要年份大了,月份和天怎么变都没用
豁然开朗。
- 输入处理:首先,读取输入的两个日期(计划开始学习的日期和询问的日期)。
- 日期比较:比较两个日期,判断询问的日期是否在计划开始学习的日期之后。
- 输出结果:根据比较结果输出
yes
或no
。
方法:
为了比较两个日期,可以采取以下方法:
- 转换为天数:将年、月、日转换为自某个固定时间点(如公元元年)以来的天数,然后进行比较。
- 逐个比较:先比较年,如果相等再比较月,如果月也相等再比较日。
代码 1 :
# include <stdio.h>
int main ()
{
int year,month,day;
int year1,month1,day1;
//定义变量 要有两个 题目中说了 一个是计划开始的 一个是询问的时间
scanf("%d %d %d",&year,&month,&day);
scanf("%d %d %d",&year1,&month1,&day1);
//用户输入数据 并判断
//直接判断 两次用户输入的年月日是否一样就可以了
//一样就输出yes,或者在计划开始的时间之后也是yes
if (year==year1&&month==month1&&day<=day1)
//这个题目注意只要年份大了,月份怎么变都没用
{
printf("yes\n");
}
//死脑筋的时候写下的代码......
/*else if (year>year1||month<month1||day<day1)
{
printf("yes\n");
}*/
else if (year<year1)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
代码 2 :
使用数组来判断
int main()
{
int arr[2][3] = { 0 };
//定义一个二维数组并初始化
for (int a = 0; a < 2; a++)
{
for (int b = 0; b < 3; b++)
{
scanf("%d", &arr[a][b]);
}
}
//把输入的值赋给数组内的变量
if (arr[1][0] > arr[0][0])
{
printf("yes\n");
}
else if (arr[1][0] == arr[0][0])
{
if (arr[1][1] > arr[0][1])
{
printf("yes\n");
}
else if (arr[1][1] == arr[0][1])
{
if (arr[1][2] >= arr[0][2])
{
printf("yes\n");
}
}
else if (arr[1][1] < arr[0][1])
{
printf("no\n");
}
}
else if(arr[1][0] < arr[0][0])
{
printf("no\n");
}
return 0;
}
知识点:
以下来自 AI
- 输入输出:如何使用C语言中的
scanf
和printf
函数进行输入输出。 - 条件语句:使用
if
、else if
和else
进行条件控制。 - 循环控制:如果需要,可以使用循环来处理输入的每个部分。
- 算术运算:进行日期比较时可能需要用到。
- 闰年判断:在转换为天数时需要考虑闰年的情况。
附 AI 写的一份代码:
#include <stdio.h>
// 函数用于判断是否为闰年
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int y, m, d; // 计划开始学习的日期
int y1, m1, d1; // 询问的日期
// 读取计划开始学习的日期
printf("Enter the planned start date (year month day): ");
scanf("%d %d %d", &y, &m, &d);
// 读取询问的日期
printf("Enter the date to check (year month day): ");
scanf("%d %d %d", &y1, &m1, &d1);
// 比较年份
if (y1 > y)
{
// 如果询问年份大于计划年份,输出yes
printf("yes\n");
}
else if (y1 == y)
{
// 如果年份相同,继续比较月份
if (m1 > m)
{
// 如果询问月份大于计划月份,输出yes
printf("yes\n");
}
else if (m1 == m)
{
// 如果月份相同,继续比较日期
if (d1 >= d)
{
// 如果询问日期大于或等于计划日期,输出yes
printf("yes\n");
}
else
{
// 否则输出no
printf("no\n");
}
}
else
{
// 如果月份小于计划月份,输出no
printf("no\n");
}
}
else
{
// 如果询问年份小于计划年份,输出no
printf("no\n");
}
return 0;
}