【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)

目录

问题描述

思路分析

数据结构构建部分

计算部分

代码实现

结果测试

 

此问题解决方法不唯一,这里介绍的是一种使用数组和循环实现的简单办法

问题描述

 

思路分析

问题的要求是输入一个日期,计算这是当年的第几天——要解决这个问题,逻辑就是将输入日期当月之前整月的天数加起来,再加上当月的天数,得到的就是我们想要的结果  我们分步来完成

首先,完成对输入的要求

创建三个整型变量分别用来存储年月日 按照题目的要求读取并存储到变量中

int year = 0, month = 0, day = 0;
scanf("%d %d %d", &year, &month, &day);

 

数据结构构建部分

 其次,想要将整月的天数加起来,需要考虑到每个月的天数各不相同

这里用一个最简单的方法——用数组来实现对不同月份天数不同的处理

int arr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

注意:这里创建了一个整型数组,并且第一个元素为0,后面12个元素分别为12个月份不同的天数

之所以要在第一个元素放数组0,是因为这样可以使数组每个元素的下标对应月份

不过,需要注意的一个点是——考虑到年份的不同,闰年的2月比正常情况下要多一天

所以额外进行一个判断,如果年份是闰年,数组下标为2的元素值加一

关于闰年的判断有一个小口诀——四年一闰,百年不闰,四百年再闰

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{arr[2] += 1;
}

 

 以上,已经完成了所需的数据结构

计算部分

接下来就是完成对天数的相加,来计算出输入日期是第几天

首先创建一个变量来存储天数

然后用一个循环将输入的月份之前的整月天数加起来

在循环结束之后,将循环内得到的计算结果再加上当月的天数就是某年某月某日所处在当年的天数啦

int days = 0;
for (int i = 0; i < month; i++)
{days += arr[i];
}
days += day;
printf("%d\n", days);

 最后,别忘记输出运算结果

完整代码如下

代码实现

#include <stdio.h>
int main()
{int year = 0, month = 0, day = 0;scanf("%d %d %d", &year, &month, &day);//以下是数据结构的构建int arr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };//存储每个月的天数if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){arr[2] += 1;  //如果该年是闰年,2月天数+1}//以下是计算部分int days = 0;for (int i = 0; i < month; i++){days += arr[i];  //将整月天数相加}days += day;  //再加上当月天数printf("%d\n", days);return 0;
}

结果测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/614025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB之Change Stream实战

什么是 Chang Streams Change Stream 指数据的变化事件流&#xff0c;MongoDB 从 3.6 版本开始提供订阅数据变更的功能。Change Stream 是 MongoDB 用于实现变更追踪的解决方案&#xff0c;类似于关系数据库的触发器&#xff0c;但原理不完全相同&#xff1a; Change Stream触…

Linux动态分配IP与正向解析DNS

目录 一、DHCP分配 1. 动态分配 1.1 服务端服务安装 1.2 修改服务端dhcp配置 1.3 修改客户端dhcp&#xff0c;重启查询网卡信息 2. 根据mac固定分配 2.1 修改服务器端dhcp服务配置 2.2 客户端自动获取&#xff0c;查看网卡信息 二、时间同步 1. 手动同步 2. 自动同…

java实现AES256对称加解密工具类

一、引入依赖包 引入相关依赖包 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version> </dependency> <!--lombok用于简化实体类开发--> <dependency&g…

Hive基础

hive的基础部分大致有四部分&#xff1a;Hive数据类型、Hive运算符、Hive数据存储、Hive表存储格式。这四部分是学习hive必须掌握的知识。 一、Hive数据类型 整体概述 1&#xff0c;hive的数据类型指的是表中列字段类型&#xff0c;类似于编程语言中对变量类型的定义如&#…

229.【2023年华为OD机试真题(C卷)】手机App防沉迷系统(模拟-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-手机App防沉迷系统二.解题思路三.题解代码Pyth…

Beauty algorithm(七)瘦脸

瘦脸的实现采用局部平移法。 一、skills 前瞻 局部平移 二、目标区域定位 左脸: 关键点选择3、5点,基点30 rmax:计算两点5-3间的距离, |x-c|:图像任一点到固定基点c的距离 |m-c|:两固定点距离 右脸: 关键点选择

【MySQL】锁机制

文章目录 一、表级锁和行级锁二、排他锁和共享锁三、InnoDB行级锁行级锁间隙锁意向共享锁和意向排他锁 四、InnoDB表级锁五、死锁六、锁的优化建议 一、表级锁和行级锁 表级锁&#xff1a; 对整张表加锁。开销小&#xff0c;加锁快&#xff0c;不会出现死锁&#xff1b;锁粒度…

STL-list的使用简介

目录 ​编辑 一、list的底层实现是带头双向循环链表 二、list的使用 1、4种构造函数&#xff08;与vector类似&#xff09;​编辑 2、迭代器iterator 3、容量&#xff08;capicity&#xff09;操作 4、element access 元素获取 5、增删查改 list modifiers 6、list的迭…

Linxu每日智囊

每日分享三个Linux命令,悄悄培养读者的Linux技能。 欢迎关注公众号(NLP Research) apt 作用 包管理器 语法 apt [选项] 软件包 参数: -h:帮助-y:当安装过程提示选择全部为"yes"-q:不显示安装的过程案例 列出所有可更新的软件清单命令sudo apt update升级软…

ROS2——Parameters

节点可以使用参数来配置各项操作&#xff0c;这些参数可以说布尔值、整数、字符串等类型。节点在启动时会读取参数。我们将参数单独列出来&#xff0c;而不是写在源文件中&#xff0c;这样做可以方便我们调试&#xff0c;因为在不同的机器人、环境中&#xff0c;我们需要的参数…

【Unity】Joystick Pack摇杆插件实现锁四向操作

Joystick Pack ​ 简介&#xff1a;一款Unity摇杆插件&#xff0c;非常轻量化 ​ 摇杆移动类型&#xff1a;圆形、横向、竖向 ​ 摇杆类型&#xff1a; Joystick描述Fixed固定位置Floating浮动操纵杆从用户触碰的地方开始&#xff0c;一直固定到触碰被释放。Dynamic动态操纵…

网卡高级设置-提高网络环境

网卡高级设置&#xff0c;提高网络质量排除一些连接问题 一、有线网卡 1、关闭IPv6&#xff1b; 可以关闭协议版本6&#xff0c;因为它会引起一些网络连接问题&#xff0c;而且现在几乎用不到IP6。 2、关闭节约电源模式&#xff1b; 右击计算机->设备->设备管理器-&…

Hive基础知识(三):Linux系统下的MySQL安装

1&#xff09;检查当前系统是否安装过 MySQL [zzdqhadoop100 hive]$ rpm -qa|grep mariadb mariadb-libs-5.5.68-1.el7.x86_64 #如果存在&#xff0c;就用下面这条命令卸载 [zzdqhadoop100 hive]$ sudo rpm -e --nodeps mariadb-libs2&#xff09;解压 MySQL 安装包 [zzdqhadoo…

开源C语言库Melon:数据恢复算法

本文讲述开源C语言库Melon中的里德所罗门纠错码的使用。 关于 Melon 库&#xff0c;这是一个开源的 C 语言库&#xff0c;它具有&#xff1a;开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github repo 简介 里德所罗门编码是一种纠错码技术&#xff0c;…

微信小程序的生命周期函数有哪些?

面试官&#xff1a;说说微信小程序的生命周期函数有哪些&#xff1f; 一、是什么 跟vue、react框架一样&#xff0c;微信小程序框架也存在生命周期&#xff0c;实质也是一堆会在特定时期执行的函数 小程序中&#xff0c;生命周期主要分成了三部分&#xff1a; 应用的生命周期…

Python 运算符的两个练习案例

1、输入圆的半径&#xff0c;计算圆的周长和面积&#xff1a; 实现方法&#xff1a; # 通过import 引入数学计算类 import mathradius float(input(请输入圆的半径&#xff1a;))perimeter 2 * math.pi * radius area math.pi * radius ** 2print(f圆的周长为&#xff1a;…

MacOS安装Miniforge、Tensorflow、Jupyter Lab等(2024年最新)

大家好&#xff0c;我是邵奈一&#xff0c;一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为&#xff1a;被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年&#xff0c;我整理了很多IT技术相关的教程给大家&#xff0…

MongoDB聚合:$bucket

$bucket将输入文档按照指定的表达式和边界进行分组&#xff0c;每个分组为一个文档&#xff0c;称为“桶”&#xff0c;每个桶都有一个唯一的_id&#xff0c;其值为文件桶的下线。每个桶中至少要包含一个输入文档&#xff0c;也就是没有空桶。 使用 语法 {$bucket: {groupBy…

MySQL数据库导入导出远程备份

一 navcat导入导出 导入 选择数据库 选择自己需要的的脚本进行导入 18万的sql脚本数据 导入时间33秒左右 导出 选择表右击----转存SQL文件---结构和数据 导出时间比较快 二 mysqldump 导入导出 先进入mysql的安装bin目录下&#xff0c;先将所要导入的脚本放入该bin目录下…

从优化设计到智能制造:生成式AI在可持续性3D打印中的潜力和应用

可持续性是现代工业中一个紧迫的问题&#xff0c;包括 3D 打印领域。为了满足环保制造实践日益增长的需求&#xff0c;3D 打印已成为一种有前景的解决方案。然而&#xff0c;要使 3D 打印更具可持续性&#xff0c;还存在一些需要解决的挑战。生成式人工智能作为一股强大的力量&…