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

C/C++—有关日期类的OJ题

 

✨✨ 欢迎大家来到小伞的大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:C++学习
小伞的主页:xiaosan_blog

1.计算日期到天数的转换(简单)

计算日期到天数转换__牛客网 (nowcoder.com)​​​​​​

这题主要考察对闰年平年的判断,大家肯定能轻松解决的!!! 

#include <stdio.h>int main() {int y, m, d;scanf("%d %d %d", &y, &m, &d);//判断是否为闰年int arr[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (((y % 4 == 0) && (y % 100 != 0)) || y % 400 == 0) {arr[1] = 29;}//求和int sum = 0;for (int i = 0; i < m - 1; i++) {sum += arr[i];}sum += d;printf("%d", sum);return 0;}

2.日期差值(简单)

日期差值__牛客网 (nowcoder.com)

本题我采用的是年月分别求和(y1为最大值),计算两个的年份的差值(单独计算),求和他们本年的天数,sum求和;

 相信大家会有更方便的方法的!!!

#include <stdio.h>void swap(int* x, int* y) {int tmp = *x;*x = *y;*y = tmp;
}int main() {int y1, m1, d1, y2, m2, d2;int arr[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };scanf("%4d%2d%2d", &y1, &m1, &d1);scanf("%4d%2d%2d", &y2, &m2, &d2);int sum2 = 0;int sum1 = 0;//因为后面我认为y1为大值,所以在这里判断将y1设置为大值if (y1 < y2) {swap(&y1, &y2);swap(&m1, &m2);swap(&d1, &d2);}if (y1 == y2) {if (m1 < m2) {swap(&m1, &m2);swap(&d1, &d2);}}if (y1 == y2) {if (m1 == m2) {if (d1 < d2) {swap(&d1, &d2);}}}//差的年数int x = y1 - y2;//记录y2年的天数if (((y2 % 4 == 0) && (y2 % 100 != 0)) || y2 % 400 == 0) {//判断是否为闰年arr[1] = 29;}for (int i = 0; i < m2 - 1; i++) {sum2 += arr[i];}sum2 += d2;//记录y1年的天数if (((y1 % 4 == 0) && (y1 % 100 != 0)) || y1 % 400 == 0) {//判断是否为闰年arr[1] = 29;}for (int i = 0; i < m1 - 1; i++) {sum1 += arr[i];}sum1 += d1;for (int i = 0; i < x; i++) {if (((y1 % 4 == 0) && (y1 % 100 != 0)) || y1 % 400 == 0) {sum1 += 366;} else {sum1 += 365;}}printf("%d", sum1 - sum2+1);return 0;
}

3.日期累加

日期累加__牛客网 (nowcoder.com)

本题主要处理进位的问题,注意本题的打印格式 

#include <iostream>
using namespace std;static int arr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int main() {int n;scanf("%d", &n);while (n--) {int y, m, d, add;//将年月日分别取值,以便后续分别处理scanf("%4d%2d%2d", &y, &m, &d);scanf("%d", &add);d += add;//将日相加if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {arr[2] = 29;}//判断是否超过当月的天数while (d > arr[m]) {if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {arr[2] = 29;} else {arr[2] = 28;}d -= arr[m];m++;while (m > 12) {m -= 12;y++;}}//因为对打印的值有特殊要求,这里需要特殊处理if (m > 9)if (d > 9) {printf("%d-%d-%d\n", y, m, d);} else {printf("%d-%d-0%d\n", y, m, d);} else{ if (d > 9) {printf("%d-0%d-%d\n", y, m, d);} else {printf("%d-0%d-0%d\n", y, m, d);}}}
}

相关文章:

  • 基于YOLOv8目标检测与chef-transformer(T5)从图像创建食谱
  • C++结尾
  • 随记——机器学习
  • 如何一个月速通——2024年网络工程师,软考老鸟备考经验分享!
  • Android 通过自定义注解实现Activity间跳转时登录路由的自动拦截
  • Qt_文件操作
  • 了解独享IP的概念及其独特优势
  • 微信小程序如何使用自定义的字体
  • 解决macOS MySQL安装后不能远程访问的问题
  • golang雪花算法实现64位的ID
  • 无人机侦测:频谱无线电侦测设备技术详解
  • OSPFv3协议几类LSA介绍
  • redis序列化数据时,如何包含clsss类型信息?
  • 多线程计算π
  • 力扣9.25
  • ----------
  • [笔记] php常见简单功能及函数
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Apache Zeppelin在Apache Trafodion上的可视化
  • CAP 一致性协议及应用解析
  • co.js - 让异步代码同步化
  • Django 博客开发教程 16 - 统计文章阅读量
  • JWT究竟是什么呢?
  • Koa2 之文件上传下载
  • node和express搭建代理服务器(源码)
  • Python 反序列化安全问题(二)
  • Shadow DOM 内部构造及如何构建独立组件
  • 蓝海存储开关机注意事项总结
  • 排序算法学习笔记
  • 前端面试之CSS3新特性
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何设计一个比特币钱包服务
  • -- 数据结构 顺序表 --Java
  • 我看到的前端
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #pragma pack(1)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (function(){})()的分步解析
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (二)学习JVM —— 垃圾回收机制
  • (含笔试题)深度解析数据在内存中的存储
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (正则)提取页面里的img标签
  • (转)Unity3DUnity3D在android下调试
  • **PHP二维数组遍历时同时赋值
  • .bashrc在哪里,alias妙用
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .Net多线程Threading相关详解
  • .so文件(linux系统)