输入日期,计算当前日期是这一年中的第几天(涉及闰年问题)

一、应用到的知识:闰年问题,数组,for循环,命令行参数,atoi函数

        1. 闰年问题:

        闰年 是指该年有366日,即较平常年份多出一日。每400年就会有一次闰年;或者年份是4的倍数,但不是100的倍数的,也是闰年。如2000年是闰年,2004年也是闰年,但2001年却不是闰年。

        2. 数组:

        连续有顺序的,大小固定并且里面的数据类型一致的内存空间
                

        3.for循环:

                for (初始化; 判断表达式; 变量处理){
                    代码块;
                }
        初始化:用于初始化变量,只有刚进入for循环时执行
        判断表达式:只要结果为真(不为0,NULL等),就会执行代码块
        变量处理:对变量进行处理的,如 i++, i = i * 2,  i--等
        注意:
                a. 首次进入for循环时,变量处理不会进行,只会进行初始化和判断表达式的。
                b. 以上三个并不是必须填写的,可以和while循环互相替换

// 代码输出:
// 0
for (int i = 0; i < 1; i++){printf("%d\n", i);
}// 将i < 1改为 i < 0 则第一次进入不满足条件,不输出

        4. 命令行参数(以下列代码为例):

#include <stdio.h>int main(int argc, char* argv[]) {for (int i = 0; i < argc; i++) {printf("arg %d: %s\n", i, argv[i]);}
}

        上面示例中,main()函数有两个参数argc(argument count)和argv(argument variable)。这两个参数的名字可以任意取,但是一般来说,约定俗成就是使用这两个词。

第一个参数argc是命令行参数的数量,程序名也被计算在内。
第二个参数argv是一个数组,保存了所有的命令行输入,它的每个成员是一个字符串指针。

        5.atoi函数:

        该函数在头文件stdlib.h中,功能是将字符串转为整数(ASCII to int);
        函数原型:int atoi(const char* nptr);
        返回值:整型
        参数:字符串(字符类型的数组)

二、完整代码和功能演示视频

#include <stdio.h>
#include <stdlib.h>// 返回一年中的第几天的函数
int Day(int year, int month, int day){// 初始化月份天数,没有0月,空置  二月int months[13] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){months[2] = 29;} else {months[2] = 28;}int ret = 0;for (int i = 1; i < month; i++){ret += months[i];}return ret + day;
}// 主函数的参数:argc和argv
int main(int argc, char *argv[]){if (argc != 4){printf("Usage: %s 2020 12 3\n", argv[0]);return 1;}int count = 0;count = Day(atoi(argv[1]), atoi(argv[2]), atoi(argv[3]));printf("The %s-%s-%s is %d days.\n", argv[1], argv[2], argv[3], count);return 0;
}

计算当天年天数20231227

三、介绍

        1. 定义数组装载一年中12个月的每天天数,并且计算闰年将2月天数单独装载

        2. 先封装一个函数Day(), 然后通过命令行参数输入日期

        3. 在Day函数中,计算从1月1日截止至输入日期的天数,最后在主函数中输出

       

四、简单说一下外话

        注意,本次的代码仅仅做一个小练习,所以并未对输入的参数进行设限,故输入一些错误数据,如13月,或者51号,或者 -2013年都是可以的。如果想要使代码更完善一些,不妨自己添加一些判断。

        本次代码难度很小,可以利用库函数time.h中的函数简单完成,但本次仅仅是为了了解一些知识,并不对time.h库进行介绍

        制作不易,还望点赞评论支持一下,谢谢

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

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

相关文章

【后端】拷贝数据字典

文章目录 前言逻辑前端创建复制弹窗引用复制弹窗打开复制弹窗后端定义【复制】控制器定义服务接口实现服务接口前言 一开始在设计单据状态的时候,是考虑了将所有单据状态的字典项全部规划好啦,但是实际使用,可能不同的业务其单据的字典项内容不同,例如客户要求的到货单单据…

Flowable-升级为7.0.0.M2-第二节

目录 替换变化的类和配置把javax.servlet 替换为 jakarta.servlet修改redis的配置配置logging.level.org.springframework.boot.autoconfigureerror避免影响视听 替换变化的类和配置 把javax.servlet 替换为 jakarta.servlet import javax.servlet.ServletContext; import ja…

【Qt-容器类】

Qt编程指南 ■ 顺序容器类■ QList■ QVector■ QLinkedList■ QStack■ QQueue ■ 关联容器类■ QSet■ QMap■ QMultiMap■ QHash■ QMultiHash ■ 顺序容器类 ■ QList QList 比较常用的容器类&#xff0c;以数组列表的形式实现&#xff0c;在前、后添加数据非常快。以下为…

SpringBoot操作world格式的文件与pdf格式的文件互转

文章目录 一、SpringBoot如何将pdf格式的文件流转换成world格式的文件流二、SpringBoot如何将world格式的文件转换成pdf格式的文件 一、SpringBoot如何将pdf格式的文件流转换成world格式的文件流 ​ 将 PDF 格式的文件流转换成 Word 格式的文件流是一个比较复杂的任务&#xf…

【Linux基础】9. 用户管理

文章目录 【 1. 用户基本管理 】1.1 useradd 添加用户1.2 passwd 更改用户密码1.3 su 切换用户1.4 userdel 删除用户 【 2. 用户的组 】2.1 more 查看系统所有组2.2 显示用户的组2.3 更改用户的组 【 3. 环境变量 】 【 1. 用户基本管理 】 1.1 useradd 添加用户 全称作用use…

【教程】使用ipagurd打包与混淆Cocos2d-x的Lua脚本

文章目录 摘要引言正文1. 准备工作2. 使用ipaguard处理Lua文件3. 运行ipagurd进行混淆代码加密具体步骤测试和配置阶段IPA 重签名操作步骤4. IPA重签名与发布 总结 摘要 本文将介绍如何使用ipagurd工具对Cocos2d-x中的Lua脚本进行打包与混淆&#xff0c;以及在iOS应用开发中的…

tekton 发布 kubernetes 应用

tekton 发布 kubernetes 应用 基于Kubernetes 服务部署 Tekton Pipeline 实例&#xff0c;部署完成后使用tekton来完成源码拉取、应用打包、镜像推送和应用部署。 本文实现一个 golang-helloworld 项目 CI/CD 的完整流程&#xff0c;具体包括以下步骤&#xff1a; 从 gitee…

css 超过一行/多行显示省略号... - 附示例

效果 1、超过一行 2、超过多行 - 以两行为例 二、示例代码 1、超过一行 margin: 20px; width: 50px; border: 1px solid red; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 2、超过多行 - 以两行为例 margin: 20px; width: 50px; border: 1px solid r…

【日常聊聊】年度总结

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 博客创作的初衷&#xff1a; 学到的技能&#xff1a; Java知识的深度掌握&#xff1a; Spring框架的应用和实践&#xff1a; 前端技…

Unity so文件的问题

文章目录 问题在面板上无法显示子节点如何保存继承于so的类必须放置在单个脚本so类文件名和类名要一致 问题 最近自己在写一个行为树出现一些问题记录一下首先NodeTree肯定是so文件但是node可以是单纯的类&#xff0c;也可以是so。后来我发现只能是so 在面板上无法显示 第一…

linux 网络工具(二)

linux 网络工具 1. ip命令簇4.1 address4.2 link4.3 route4.4 rule 2. 其他常用命令2.1 ifup/ifdown2.2 配置主机名2.3 设置DNS服务器指向2.4 配置域名解析2.5 ss2.6 路由相关配置文件2.7 查看机器可用端口2.8 traceroute2.9 dhclient 1. ip命令簇 Linux的ip命令和ifconfig类似…

asp.net core webapi AutoMapper使用

1.AutoMapper介绍&#xff1a; AutoMapper是一个.NET库&#xff0c;用于简化对象之间的映射。它可以帮助开发人员在不同类型之间进行自动转换&#xff0c;从而减少重复的手动映射代码。 使用AutoMapper&#xff0c;开发人员可以定义映射规则&#xff0c;然后该库会自动执行对…

Mybatis-Plus基础之Mapper增删改

文章目录 一、普通增删改普通新增普通删除根据 entity 条件&#xff0c;删除记录根据 ID 批量删除根据 ID 删除根据 columnMap 条件&#xff0c;删除记录 普通修改根据 whereWrapper 条件&#xff0c;更新记录根据 ID 修改 二、insert ID 主键回填三、条件删除&#xff1a;使用…

【C语言学习疑难杂症】第12期:如何从汇编角度深入理解y = (*--p)++这行代码(易懂版)

对于如下代码,思考一下输出结果是什么? int a[] = {5, 8, 7, 6, 2, 7, 3}; int y, *p = &a[1]; y = (*--p)++; printf("%d ",y); printf("%d",a[0]); 这个代码看似简单,但是在“y = (*--p)++;”这行代码里,编译器做了很多工作。 我们在vs2022的…

系列十七(面试)、请你谈谈RocketMQ的消息丢失问题

一、RocketMQ的消息丢失问题 1.1、概述 生产环境中为了保证服务的高可用&#xff0c;一般情况下都是采用集群的方式&#xff0c;RocketMQ也不例外&#xff0c;另外现在企业级的开发基本都是分布式微服务的模式&#xff0c;这就存在着跨网络传输数据的问题&#xff0c;而网络传…

促进软件开发团队创新的方法和团队协作原则

在迅速发展的科技领域&#xff0c;创新成为软件开发团队不可或缺的一部分。为了在竞争激烈的市场中保持竞争力&#xff0c;团队需要采用创新的方法&#xff0c;并建立一种积极的团队协作文化。本文将探讨一些促进软件开发团队创新的方法和团队协作原则。 1. 鼓励创意和实验 为团…

qt中实现鼠标拖动一张图片到qt控件内,图片自动在控件中展示

很多电脑软件都有鼠标拖动一张图片或者拖动一个文件到软件的指定区域内&#xff0c;就可以自动在软件中显示图片内容或者文件内容。qt中也可以这样实现。 本文介绍两种方法&#xff1a; 1、只可以以非管理员的身份运行软件时&#xff0c;才可以实现上述功能。 mainwindow.h#…

orangepi--开发板配置网络SSH登录

常用指令&#xff1a; ifconfig-------------------------------------查看网络地址 sudo passwd orangepi-------------------------改密码 nmcli dev wifi-------------------------------查看wifi nmcli dev wifi connect xx password xx--------连接网络 ip addr show wla…

【PTA】L1-016 验证身份(C++)

题目链接 &#xff1a; 题目要求&#xff1a; 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0…

【七】【C语言\动态规划】最大子数组和、环形子数组的最大和、乘积最大子数组,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…