代码:

#include <cstdio>
int month[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},
{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
bool Isleap(int year)
{return ((year%4==0&&year%100!=0)||year%400==0);
}int main()
{int d1,d2;while(scanf("%d%d",&d1,&d2)!=EOF){int y1,y2,m1,m2,day1,day2,diffValue=1;int temp;if(d1>d2){temp=d1;d1=d2;d2=temp;}y1=d1/10000;y2=d2/10000;m1=(d1%10000)/100;m2=(d2%10000)/100;day1=d1%100;day2=d2%100;while(y1<y2||m1<m2||day1<day2){day1++;diffValue++;if(day1==month[m1][Isleap(y1)]+1){m1++;day1=1;}if(m1==13){m1=1;y1++;}// printf("y1:%d,m1:%d,day1:%d\n",y1,m1,day1);}printf("%d\n",diffValue);}return 0;
}

注意的点:

1.区别闰年非闰年的条件 是可以整除4并且不可以整除100 或可以整除400

2.闰年非闰年的表示:定义了一个二维数组,在后面非常利于表达。

自己一开始做的时候,选择了switch case语句后又选择if else来表达 是哪个月份进行区分,结果运行超时,代码量太大,逻辑思维被代码量覆盖。

定义这种数组,想要就取出来,一劳永逸。

3.判断是否是闰年可以写成bool函数,返回值可以对应二维数组的列下标(闰年还是非闰年的那一列)。

4.整个过程思路要清楚:不可以直接用日期做减法,因为年月日的进制不同。

采用加法,从小日期(早)一直每天加起来,遇到进制就进位(每月的天数+1进一个月,天数剩1;13月进1,月数剩1;)

这里进位看到用了if语句,里面的条件被数组有效的简化了,原来可能要说,是1,3,5,7,8,10,12月的31天进啦,闰年的2月又怎么怎么,这里直接我不判断了,月份甩进数组的行下标进去取出来,是多少就是多少天。

不知道说能不能说清楚,怕自己过几天又忘了。

5.记住关键:定义二维数组,加法算日期。其他应该就是编写的规范和技巧了吧,多练练应该就好了。

PS:在定义变量的时候一开始为了方便记忆,我还专门用翻译软件搜了earliydate laterdate啥的很长,结果好像代码量会增加。。改了名字后,代码量减少了很多。

最后发现还不是代码量的问题,是因为我闰年的条件没看清,是不可以被100整除。

【C++】关于日期的计算相关推荐

  1. python datetime计算时间差_Python中关于日期的计算总结

    1.获取当前时间的两种方法: 代码如下: 2.获取上个月最后一天的日期(本月的第一天减去1天) 代码如下: 3.获取时间差(时间差单位为秒,常用于计算程序运行的时间) 代码如下: 4.计算当前时间向后 ...

  2. localdate计算相差天数_还在苦恼MySQL如何根据日期精确计算年龄?看这一篇,就够了

    转译自 How To Calculate Age From Date Of Birth In MySQL- Querychat. 中文转载,请注明出处. 使用SQL语句计算年龄,在事务处理和日期计算中 ...

  3. java中日期计算时间差,java中依据,两个日期,计算时间差

    java中根据,两个日期,计算时间差. 分别获取两个时间的毫秒数Date.getTime(),相减,得到的值/1000为秒数,/60*1000为分钟数,/60*60*1000为小时数. /** * 计 ...

  4. ddmmyy日期格式是多少_解锁9个日期时间计算套路,效率提高3.2%

    小伙伴们好啊,今天老祝和大家学习一组日期时间计算的套路,让工作效率再高一点点. 1.日期时间合并 如下图,需要将A列日期和B列的时间合并到一起,变成既有日期又带有时间的数据. C2公式为: =A2+B ...

  5. php 日期算法,php日期时间计算,转载

    php日期时间计算,转载 //php获取今天日期 date("Y-m-d"); //php获取昨天日期 date("Y-m-d",strtotime(" ...

  6. 输入一个日期,计算这个日期与 2018-03-12差多少天;

    #coding=gbk ''' 1.计算输入日期与基准日期的差异天数 2.方法2 利用time包 '''#输入一个日期,计算这个日期与 2018-03-12差多少天: def count_days() ...

  7. c/c++ 输入两个日期,计算日期相差多少天

    1,题目: 有两个日期,计算它们之间的差值,如果两个日期是连续的,则按照2天算. 日期格式规定为YYYYMMDD,例如20200709 2,基本思路 (1)输入两个日期 (2)以小的日期为底,每次加一 ...

  8. 崩坏3水晶计算 关于日期的计算篇 下

    继续上篇没写完的内容 关于上篇 崩坏3水晶计算 关于日期的计算篇 下 代码运行的情况 如果没看过崩坏3水晶计算 关于日期的计算篇 上,可以点这里进行跳转 未来1天内 签到水晶奖励次数:0次 签到补给卡 ...

  9. java日期的计算(当月剩余天数、获取日期当月的天数)

    日常开发中会遇到关于日期的计算比如:当月的天数.两日期之间的天数.当月剩余天数等等...... 下方为关于日期计算的demo,后期会持续更新... 获取日期当月的天数或某月总天数 /*** 获取日期当 ...

  10. C语言输入一个日期,计算这一天是周几

    问题描述:输入一个日期,计算这一天是周几,假设年份和月份的天数是一定的,分别是360天和30天,并且已知一个日期. 首先,要解决一个问题,你要知道真正需要求的是什么. 对于这个题,我们要解决的是已知日 ...

最新文章

  1. python学习-字符串格式化
  2. Spring重试–与项目集成的方式
  3. BootStrap笔记-分页
  4. PHP以xml形式获取POST数据
  5. mysql 锁定表_MySQL表锁定
  6. 修改密码-测试用例设计
  7. rpm软件管理程序,yum仓库的作用
  8. 用python代码将原图转化为手绘图
  9. SQK Server实现 LeetCode 175 组合两个表
  10. 计算机联锁维修管理机,计算机联锁试卷
  11. CCNA、CCNP、H3C认证精品视频课程
  12. php懂erp是什么意思,ERP是个什么鬼,这里的讲解通俗易懂
  13. excel多个表格数据汇总怎么做?
  14. Qt5.9中在Pixmap图片设备上绘制线段实例
  15. win10下samba 重新登录注销
  16. 函数与事件吧,未整理
  17. postman-模拟上传图片
  18. ubuntu 访问群晖NAS存储硬盘
  19. selenium爬取评论
  20. 基于西门子200smart系列化工反应釜程序 系统进行两路PID恒温升压调节

热门文章

  1. iOS马甲包开发招式及规避4.3方法合集
  2. 解决loadrunner使用谷歌浏览器录制时打不开网页的问题
  3. 计算BDP值和wnd值
  4. 传统语音增强——基于先验信噪比的维纳滤波语音降噪算法
  5. 2021 CCPC 哈尔滨 E. Power and Modulo (思维题)
  6. 从ELK/EFK到PLG – 在EKS中实现基于Promtail + Loki + Grafana容器日志解决方案
  7. kubernetes日志架构PLG(promtail+loki+grafana)
  8. kubesphere master节点执行kubectl get po Unable to connect to the server: Forbidden
  9. 短信的发送(SMS)的发送
  10. 手机坏了微信聊天记录怎么恢复?不用怕,用这招