【日期类问题】例2.1日期差值
二 日期类问题
此类问题解题思路: 定一个锚点日期,如0年1月1日,先算出往后多少年内每一日子距离这个锚点的天数,例如要算两个日期间天数时,便可以将两个日期距离锚点日期之间的天数相减,即可得到。
题目描述:
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出格式:
每组数据输出一行,即日期差值。
样例输入:
20180428
20181213
样例输出:
230
来源:
2009年上海交通大学计算机研究生机试真题
#include<bits/stdc++.h>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
//定义宏判断是否是闰年,方便计算每月天数
using namespace std;int Day[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
};//预存每月的天数,注意二月配合宏定义作特殊处理struct Date{//日期类,方便日期的推移int d; // dayint m; // mouth int y; // yearvoid next_Day(){//计算下一天的日期d++;if(d>Day[m][ISYEAP(y)]){//若日数超过了当月最大日数d = 1;m++;//进入下一月if(m>12){//月数超过12m = 1;y++;//进入下一年}}}
};int buf[5001][13][32]; //保存预处理的天数
int abs(int x){//求绝对值return x < 0 ? -x:x;
}int main()
{Date tmp;int cnt = 0;//天数计数tmp.d = 1;tmp.m = 1;tmp.y = 0;//初始化日期类对象为0年1月1日while(tmp.y < 5001){//日期不超过5000年buf[tmp.y][tmp.m][tmp.d] = cnt;//将该日与0年1月1日的天数差保存起来tmp.next_Day();//计算下一天日期cnt++;//计数器累加,每经过一天计数器即+1,代表与原点日期的间隔又增加一天} int d1, m1, y1;int d2, m2, y2;while(scanf("%4d%2d%2d", &y1, &m1, &d1) != EOF){scanf("%4d%2d%2d", &y2, &m2, &d2);//读入要计算的两个日期cout << abs(buf[y2][m2][d2]-buf[y1][m1][d1])+1 << endl;//用预处理的数据计算两日期差值,注意需对其求绝对值}return 0;
}
扩展:
假如问题需要我们输出某个特定的日期,是那年的第几天,只需要用该日期距离锚点日期的天数 — 那年元旦距离锚点日期的天数,即可。
结束
【日期类问题】例2.1日期差值相关推荐
- java的时间日期类_Java基础学习:日期时间类
Date 类 所在的包:java.util.Date Date 类表示特定的瞬间,精确到毫秒.创建对象的值为从1970年1月1日00:00:00 到当前系统显示时间所经历的毫秒数. 例如:public ...
- java日期类的计算问题_java日期计算(Calendar类)
昨天学了java日期的格式器,主要是用SimpleDateFormat进行格式化.解析.但这还仅停留在日期的查看(调整显示格式)阶段,更重要的是日期的操作.今天继续学习,记录如下: 今天主要学习的日期 ...
- java中的常用日期类_Java中的常用日期类说明
日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...
- Access计算日期字段中数据与当前日期的差值并将其显示在指定字段中
本文记录了用于比较Access中,记录的日期数据,和当前日期相差几天的设置方法.当前是2020年11月27日 最终效果如下截图: 注意,这个是采用 "创建"→"查询向导 ...
- 定义日期类,根据输入的日期计算明天日期,上机实践--我的c++之路
//这个程序有缺点,不能输入每个月最后一天.否则计算出错...可是不知道怎么才能解决,有日期数据类型就好了.以后学习过程中改进吧 #include<iostream.h> class cd ...
- 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...
二日期类问题 例2.3 日期差值 (九度教程第6题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数 ...
- 日期类的实现(C++)
目录 注意: 1.作用域 2.实例化 3.this指针 4.std 1).std是什么? 2).为什么将cout放到名字空间std中? 3).std都是什么时候使用? 5.C语言"/&quo ...
- 三代日期类的基本使用
三代日期类的基本使用 文章目录 三代日期类的基本使用 一.第一代日期类Date 二.第二代的日期类Calendar 二.第三代的日期类LocalDateTime 总结 一.第一代日期类Date Dat ...
- C++类与对象入门实践(日期类的实现)
日期类 class Date { public://成员函数private:int _year;int _month;int _day; }; 日期类成员对象: 年.月.日 实现功能: 成员函数 ...
- 【愚公系列】2023年01月 Java教学课程 043-时间日期类
文章目录 一.时间日期类 1.Date类 2.Date类常用方法 3.SimpleDateFormat类 4.时间日期类练习 一.时间日期类 1.Date类 计算机中时间原点 1970年1月1日 00 ...
最新文章
- 基于OpenCV的图像阴影去除
- 2020年世界机器人报告
- 【JVM调优】JVM的运行参数
- python字符串中某个字符修改_Python中修改字符串的四种方法
- 聊天机器人突然火了,能解决那方面的需求吗?
- [Linux] 编写Dockerfile文件自动构建镜像
- 2019.4.17 映纷创意首页铺设练习
- 最浅显易懂的使用nginx实现端口映射的教程
- 2019黑马python面试资料_2019最新Python黑马头条推荐系统项目
- Exsi 5.0 物理端口捆绑+VRRP+DvSwitch配置
- IP头TCP头的checksum校验和计算
- 读取.Properties配置文件
- 人脸识别撞脸名画_范冰冰深夜晒自拍撞脸荷兰名画,三万元名牌包抢镜,两套餐具亮了...
- 常见数据分析误区有哪些
- 蓝奏云无视密码强制下载器
- 数据挖掘第三版课后习题
- JS 页面繁简字转换
- java iplimage 头文件_在javacv中将IplImage转换为Mat
- MySQL数据库:表结构优化
- Portrait Photography: Ten Styles with One Light 人像摄影:一种风格的十种风格 Lynda课程中文字幕