【上机笔试之五】计算两个日期的差值
2017-03-09 16:50
1126 查看
计算两个日期差的天数是上机笔试中常考的一种提醒,这里程序的大致思路是:预先计算出每一天距离1900年1月1日的天数,两次结果一做差就是两个日期差的天数。代码如下:
上机笔试系类教程:
【上级笔试之一】数据输入
【上机笔试之二】冒泡排序
【上机笔试之三】快速排序
【上机笔试之四】快速排序(2)
【上机笔试之五】计算两个日期的差值
【上机笔试之六】Hash应用
【上机笔试之七】Hash应用(2)-从大到小顺序输出其中前m大的数
【上机笔试之八】二分法查找
【上机笔试之九】贪心算法-换零钱
【上机笔试之十】栈应用-扣号匹配
#include <iostream> #include <algorithm> #include <string.h> using namespace std; //判断是否是闰年 #define ISYEAP(x) ((x % 100 != 0) && (x % 4 != 0) || (x % 400 != 0)) ? 1 : 0 //预设闰年和非闰年每月的天数 int daynum[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 year; int month; int day; void nextday(){ day++; if (day > daynum[month][ISYEAP(year)]) { day = 1; month++; if (month > 12) { month = 1; year++; } } } }; int abs(int y){ return (y > 0) ? y : -y; } //程序思路:预先计算出每一天距离1900年1月1日的天数,两次结果一做差就是两个日期差的天数。 //缺点,如果设定的基准日期比1900年小很多,会导致数组太大,空间溢出。 void main() { int y1,y2,m1,m2,d1,d2; int buf[201][13][32]; Date tmp; tmp.day = 1; tmp.month = 1; tmp.year = 1900; int num = 0; while (tmp.year < 2100){ num++; buf[tmp.year - 1900][tmp.month][tmp.day] = num; tmp.nextday(); } while ( scanf("%4d%2d%2d", &y1, &m1, &d1) != EOF) { scanf("%4d%2d%2d", &y2, &m2, &d2); printf("%d", abs(buf[y2 - 1900][m2][d2] - buf[y1 - 1900][m1][d1]) + 1); } }
上机笔试系类教程:
【上级笔试之一】数据输入
【上机笔试之二】冒泡排序
【上机笔试之三】快速排序
【上机笔试之四】快速排序(2)
【上机笔试之五】计算两个日期的差值
【上机笔试之六】Hash应用
【上机笔试之七】Hash应用(2)-从大到小顺序输出其中前m大的数
【上机笔试之八】二分法查找
【上机笔试之九】贪心算法-换零钱
【上机笔试之十】栈应用-扣号匹配
相关文章推荐
- Excel 技巧百例:计算两个日期的差值
- js计算两个日期的差值
- 计算SharePoint两个日期和时间字段之间的时间差值
- asp.net计算两个日期时间之间的差值(天数、小时、分、秒等)
- 计算SharePoint两个日期和时间字段之间的时间差值
- 【峰回路转】Excel技巧百例 08.计算两个日期的差值
- javascript 计算两个日期的差值
- oracle中计算两个日期之间的差值
- 怎么计算两个日期之间的差值
- IOS计算两个日期的差值
- iOS 计算两个日期字符串的差值
- SAP HANA计算两个日期的差值
- 将String格式转换为Date格式,并计算两个日期的差值
- 华为2013校园招聘上机笔试题-计算整数二进制表达式中0的个数
- Python计算两个日期相差天数的方法示例
- Android编程实现计算两个日期之间天数并打印所有日期的方法
- python 计算两个日期相差多少个月实例代码
- [JAVA]计算两个日期相差的天数
- 计算两个日期相差年月日
- C# 两个日期相减得到月数和天数和时and计算 日期减去月之后的日期