C++刷題:日期模擬(1)

(注:本文所展示代碼均為本人所寫,不一定為最優)

?

我們首先用純邏輯和手動計算來拆解日期模擬題,再來代碼實現,看看這些問題的底層思路怎么玩明白~

?一、基礎日期計算:直接算“過幾天是哪天”

即進位的思路:

日期模擬進位,核心是低位(日)累計滿當月天數,就向高位(月)進 1,同時低位重置;月累計滿 12,就向年進 1,月重置 ,類似十進制“個位滿 10 進 1 到十位”,且要結合大小月、閏年(影響 2 月天數,即 2 月滿 28 或 29 天才進位 )調整規則 。

題目舉例:2024年7月20日過45天是哪天?

1.?先看當月剩余天數:7月有31天,20日到31日還剩31-20=11天;

2.?剩下的天數往后推:45-11=34天,即進入8月;

3.?8月有31天,34天超過31天,所以8月31天后還剩34-31=3天,進入9月;

4.?結果:2024年9月3日。

代碼實現如下:

?

?

二、閏年與特殊月份:必須記牢規則

閏年規則(劃重點!)

- 能被4整除但不能被100整除的年份是閏年(如2020年);

- 能被400整除的年份也是閏年(如2000年)

?- 平年2月28天,閏年2月29天,其他月份天數固定(1、3、5、7、8、10、12月31天,4、6、9、11月30天)。

代碼實現判斷閏年:

以上這兩個函數均用于判斷閏年,核心邏輯一致(滿足能被 4 整除但不能被 100 整除,或能被 400 整除 ),差異在于:

?leap_year1?:用 ?if - else? 分支,先判斷條件,再分別返回 ?true?/?false? ,邏輯清晰直觀。

leap_year2?:直接通過條件表達式返回結果,更簡潔緊湊,代碼量少 。(推薦算法題優先考慮)

?

題目舉例:2024年2月1日到2024年5月1日共有多少天?

計算步驟:

- 2024年是閏年,2月有29天,2月1日到2月29日:29天;

- 3月31天,4月30天;

- 總天數:29+31+30=90天。

?

三.練習題

1.計算一年的第幾天
https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded?tpId=37&&tqId=21296&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking

?解題思路:

1.?先判斷年份是否為閏年,確定2月天數。

2.?依據月份,累加之前月份的天數(1、3、5等大月31天,4、6等小月30天,2月按平/閏年算)。

3.?最后加上當月的天數,總和即為該日期是當年第幾天。

參考代碼如下:

?

2.日期差值

https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c?tpId=62&&tqId=29468&rp=1&ru=

?參考代碼

?以上代碼:

1.??leapyear?函數:判斷年份是否為閏年,依據能被4整除但非100整除,或能被400整除的規則 。

2.??cntday?函數:先根據平閏年設置2月天數,通過循環累加當前日期前所有月份天數,再加上當日天數;若跨多年,循環累加之前每年的天數(閏年366天,平年365天 ),得到日期距起始的總天數。

3.??main?函數:拆分輸入日期的年、月、日,調用?cntday?分別算兩日期總天數,用絕對值差加1(包含兩端日期 ),輸出結果,處理多組輸入。

?

3.打印日期

https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b?tpId=69&&tqId=29669&rp=1&ru=/activity/oj&qru=/ta/hust-kaoyan/question-ranking

?參考代碼:

?以上?C++ 代碼的解題思路如下:

1.?閏年判斷:?leap_year? 函數依據規則(能被 4 整除但非 100 整除,或能被 400 整除 )判斷年份是否為閏年,用于確定 2 月天數。

2.?數據初始化:?main? 函數里,定義年、日、月變量,?arr? 數組存儲各月天數(下標對應月份,0 號元素無用 )。

3.?處理輸入與日期轉換:?while? 循環讀取年和天數,先根據閏年設置 2 月天數。通過循環,用總天數依次減去各月天數,同時月份遞增,直到剩余天數小于當前月天數,確定最終月份。

4.?格式化輸出:依據月份和日期的位數(是否小于 10 ),分情況格式化輸出完整日期,如補前導 0 ,讓輸出符合常見日期顯示格式 。

?

4.累加日期

https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d?tpId=40&&tqId=31013&rp=1&ru=/activity/oj&qru=/ta/kaoyan/question-ranking

?參考代碼

?以上代碼用于日期累加,解題思路如下:

1.?閏年判斷:?leap_year? 函數按規則(能被4整除且非100整除,或能被400整除 )判斷閏年,影響2月天數。

2.?輸入處理:讀取測試用例數 ?n? ,再依次讀入年、月、日、待加天數。

3.?日期推算:先根據閏年設置2月天數,將待加天數與當日天數合并。通過循環,用總天數減當前月天數、遞增月份,若超12月則跨年并重置月份,同時更新閏年狀態。

4.?格式化輸出:按月份和日期的位數補前導0,輸出推算后的日期,處理完一組數據 ?n? 減1,直到所有用例完成 。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86217.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入剖析Nginx:從入門到高并發架構實戰

深入剖析Nginx:從入門到高并發架構實戰 摘要:本文全面解析Nginx的核心功能、架構原理及實戰配置,涵蓋負載均衡、反向代理、動靜分離等高級應用場景,助你構建高性能Web服務架構。 一、Nginx是什么?為什么它如此重要&…

Qt客戶端技巧 -- 窗口美化 -- 圓角窗口

不解析&#xff0c;直接給代碼例子 利用窗口重繪事件處理函數paintEvent main.cpp #include <QtCore/qglobal.h> #if QT_VERSION > 0x050000 #include <QtWidgets/QApplication> #else #include <QtGui/QApplication> #endif#include "roundedwin…

Three.js學習筆記-三要素

Three.js 學習筆記-三要素 一、Three.js 簡介 (一)前世今生 Three.js 是一款運行在瀏覽器中的 3D 引擎,由 Ricardo Cabello(Mr.doob)在 2010 年 4 月于 GitHub 首次發布 。其起源可追溯到本世紀初,代碼最初用 ActionScript 編寫,2009 年移植到 JavaScript。隨著 Web…

動力電池點焊機:驅動電池焊接高效與可靠的核心力量|比斯特自動化

在新能源汽車與儲能設備需求激增的背景下&#xff0c;動力電池的制造工藝直接影響產品性能與安全性。作為電芯與極耳連接的核心設備&#xff0c;點焊機如何平衡效率、精度與可靠性&#xff0c;成為電池企業關注的重點。 動力電池點焊機的核心功能是確保電芯與極耳的穩固連接。…

OpenCV CUDA模塊圖像處理------創建一個模板匹配(Template Matching)對象函數createTemplateMatching()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 創建一個用于在 GPU 上執行模板匹配的 TemplateMatching 對象。 該函數返回一個指向 TemplateMatching 的智能指針&#xff08;Ptr&#xff09;…

natapp 內網穿透失敗

連不上網絡錯誤調試排查詳解 - NATAPP-內網穿透 基于ngrok的國內高速內網映射工具 如何將DNS服務器修改為114.114.114.114_百度知道 連不上/錯誤信息等問題解決匯總 - NATAPP-內網穿透 基于ngrok的國內高速內網映射工具 nslookup auth.natapp.cnping auth.natapp.cn

游戲(game)

題目描述 小明最近迷上了一款游戲&#xff0c;并且很想成為這款游戲的高手&#xff0c;這款游戲需要用 資源來買裝備。他剛開始的資源價值為0,于是他每天都會做日常任務來獲得價值為1的資源。 這款游戲中有每日商店&#xff0c;小明已經提前知道了接下來n天會出現的裝備&#x…

C# 類和繼承(抽象類)

抽象類 抽象類是指設計為被繼承的類。抽象類只能被用作其他類的基類。 不能創建抽象類的實例。抽象類使用abstract修飾符聲明。 抽象類可以包含抽象成員或普通的非抽象成員。抽象類的成員可以是抽象成員和普通帶 實現的成員的任意組合。抽象類自己可以派生自另一個抽象類。例…

關于臟讀,幻讀,可重復讀的學習

mysql 可以查詢當前事務隔離級別 默認是RR repeatable-read 如果要測臟讀 要配成未提交讀 RU 讀到了未提交的數據。 3.演示不可重復讀 要改成提交讀 RC 這個是指事務還未結束&#xff0c;其他事務修改了值。導致我兩次讀的不一樣。 4.RR–可以解決不可重復讀 小總結&…

華為云Astro中服務編排、自定義模型,頁面表格之間有什么關系?如何連接起來?如何操作?

目錄 一、核心關系解析 二、連接方式與操作步驟 (一)服務編排與自定義模型的連接 (二)自定義模型與頁面表格的連接 (三)服務編排與頁面表格的連接 三、操作示例:構建數據處理閉環 場景:用戶在頁面表格中修改設備信息,觸發服務編排校驗數據并更新數據庫。 四、…

Docker鏡像無法拉取問題解決辦法

最近再學習RabbitMQ&#xff0c;需要從Docker鏡像中拉取rabbitMQ&#xff0c;但是下拉失敗 總的來說就是無法和docker鏡像遠程倉庫建立連接 我又去嘗試ping docker.io發現根本沒有反應&#xff0c;還是無法連接找了許多辦法還是沒有辦法解決&#xff0c;最后才發現是鏡像問題&a…

向 AI Search 邁進,騰訊云 ES 自研 v-pack 向量增強插件揭秘

作者&#xff1a;來自騰訊云劉忠奇 2025 年 1 月&#xff0c;騰訊云 ES 團隊上線了 Elasticsearch 8.16.1 AI 搜索增強版&#xff0c;此發布版本重點提升了向量搜索、混合搜索的能力&#xff0c;為 RAG 類的 AI Search 場景保駕護航。除了緊跟 ES 官方在向量搜索上的大幅優化動…

electron-vite串口通信

一、構建項目后&#xff0c;安裝“串口通信庫” npm install serialport二、設置 npm install --save-dev electron-rebuild ./node_modules/.bin/electron-rebuild 注意&#xff1a;如果執行報錯以下問題 1、未配置python變量 2、沒有Microsoft Visual Studio BuildTools 3…

Cisco IOS XE WLC 任意文件上傳漏洞復現(CVE-2025-20188)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 前…

從 iPhone 備份照片: 保存iPhone圖片的5種方法

隨著智能手機越來越融入我們的生活&#xff0c;我們的照片已成為我們設備上最有價值的數據形式之一。然而&#xff0c;iPhone內部存儲空間仍然有限&#xff0c;因此我們需要將iPhone中的照片備份到另一個地方&#xff0c;以釋放空間并確保珍貴的圖像記憶的安全。閱讀本指南&…

Ubuntu崩潰修復方案

當Ubuntu系統崩潰時,可依據崩潰類型(啟動失敗、運行時崩潰、完全無響應)選擇以下修復方案。以下方法綜合了官方推薦和社區實踐,按操作風險由低到高排序: 一、恢復模式(Recovery Mode) 適用場景??:系統啟動卡頓、登錄后黑屏、軟件包損壞等。 ??操作步驟??: ?…

免費批量文件重命名工具

免費批量文件重命名工具 &#x1f310; 網站: 免費批量文件重命名工具 &#x1f4cc; 工具簡介 一款功能強大的批量文件重命名工具&#xff0c;支持多種重命名方式&#xff0c;操作簡單&#xff0c;完全免費&#xff01; &#x1f680; 主要功能 功能描述自定義重命名直接輸…

VR博物館推動現代數字化科技博物館

VR博物館&#xff1a;推動現代數字化科博館新篇章 隨著科技的飛速發展&#xff0c;虛擬現實&#xff08;Virtual Reality, VR&#xff09;技術已經逐漸滲透到我們生活的方方面面&#xff0c;其中&#xff0c;VR博物館作為現代數字化科博館的重要形式之一&#xff0c;以獨特的優…

COMSOL與MATLAB聯合仿真人工智能的電學層析成像系統

關鍵詞&#xff1a;MATLAB&#xff0c;電學層析成像&#xff0c;人工智能&#xff0c;圖像重建&#xff0c;深度學習 一、引言 基于人工智能的電學層析成像系統是一種創新的檢測技術&#xff0c;結合了電學層析成像技術與人工智能算法的優勢。電學層析成像技術&#xff0c;簡…

【Latex】Windows/Ubuntu 繪制 eps 矢量圖通用方法(drawio),支持插入 Latex 數學公式

一直感覺 Visio 或者 PPT 中 Mathtype 對 latex 公式渲染效果不好&#xff0c;且在 Ubuntu 下的支持不好&#xff0c;最近重新調研發現一個好用的工具 drawio。 在線使用 https://app.diagrams.net/?srcabout 也有桌面版的應用&#xff0c;Windows 就下載 exe 安裝器&#x…