当前位置: 首页 > news >正文

练习题——-【学习补档】日期差值

问题描述

描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。

输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出描述:
每组数据输出一行,即日期差值

示例
输入:
20110412
20110422
输出:
11


问题分析

这是一个处理分析问题。

解决方案

我们只需要算出输入的日期距最早的的年份总共多少天即可;

小问题1:我们怎么计算出距离天数?
答:我们可以通过最早的那一年的第一天距离两个日期的天数之和作为计算对象;

小问题2?怎么计算上述天数?
答:实现天数计算函数即可——实现两个函数分别计算平年闰年的月天数和年天数;


代码

//思路:我们只需要算出输入的日期距最早的的年份总共多少天即可
#include <iostream>
using namespace std;int GetMonthDay(int year, int month)    //得到一个月的月数
{const static int day_arr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };if (month == 2&& (year % 4 == 0 && year % 100 != 0 || (year % 400 == 0))) {return 29;}return day_arr[month];
}int GetYearhDay(int year)    //得到一个年的月数
{if (year % 4 == 0 && year % 100 != 0 || (year % 400 == 0))return 366;elsereturn 365;
}int MonthSum(int year, int month, int day)      //得到不满一年的月数总天数
{int sum = 0;for (int i = 1; i < month; i++){sum += GetMonthDay(year, i);}return sum + day;
}int SumDay(const int date1, const int date2)
{int max = 0;int min = 0;//找到较大的日期maxif (date1 > date2){max = date1;min = date2;}else {max = date2;min = date1;}int ret_day1 = 0;int ret_day2 = 0;//返回的天数即为两个日期的差//年日期差while ((max / 10000) != (min) / 10000){ret_day1 = GetYearhDay(date1 / 10000);max -= 10000;}ret_day2 += MonthSum(min / 10000, (min % 10000) / 100, min % 100);ret_day1 += MonthSum(max / 10000, (max % 10000) / 100, max % 100);return ret_day1 - ret_day2 + 1;
}int main() {int date1;int date2;cin >> date1;cin >> date2;cout << SumDay(date1, date2);}
http://www.lryc.cn/news/253536.html

相关文章:

  • 面试问题 --文件描述符和流
  • 离线安装Zabbix的MariaDB报Error: Package: 1:mariadb-server-5.5.68-1.el7.x86 64异常解决方法
  • 【go语言开发】go项目打包成Docker镜像,包括Dockerfile命令介绍、goctl工具生成
  • Python:可以做什么?
  • Lookup Argument简史
  • 【unity3D】Transform组件(如何访问和获取Transform组件)
  • 单实例应用程序
  • Qlik 成为网络犯罪的焦点
  • 1+X Web 前端开发职业技能等级证书模拟题(中级)理论知识
  • 2023.12.4 关于 Spring Boot 统一异常处理
  • 企业网络安全守护者:EventLog Analyzer日志审计系统
  • 剪映最新版的4.9,主要更新的功能(于2023年12月2日发布)
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis核心配置详解
  • maven-profile
  • 用python找到音乐数据的位置,并实现音乐下载
  • MATLAB算法实战应用案例精讲-【图像处理】边缘检测(补充篇)(附MATLAB代码实现)
  • 黑马头条数据管理平台项目总结
  • IDEA中,光标移动快捷键(Shift + 滚轮前后滚动:当前文件的横向滚动轴滚动。)
  • 对标Gen-2!Meta发布新模型,进军文生视频赛道
  • zabbix的自动发现机制、代理功能、SNMP监控
  • spring webflux文件上传与下载
  • Android MVVM+coroutine+retrofit+flow+hilt
  • elasticsearch副本和分片
  • 【Python】zip
  • 西安安泰——ATA-1220E宽带放大器
  • 数据结构和算法专题---4、限流算法与应用
  • 亚信安慧AntDB受邀分享核心业务系统全域数据库替换实践
  • 1.uniapp基础
  • typescript中的策略模式
  • Hadoop学习笔记(HDP)-Part.16 安装HBase