c语言确定闰月的步骤,怎么判断是闰月,农历闰月是如何确定的?
农历是古代开始用来记录时间的一种重要方法,一直以来受到人们的广泛关注,那么对于闰月怎么算呢?
相信对于这个问题大家也很想知道答案,那么接下来我们就一起来看看吧。
闰月怎么算?
农历年中月以朔望月长度29.5306日为基础,所以大月为30日,小月为29日。
为保证每月的头一天(初一)必须是朔日,就使得大小月的安排不固定,而需要通过严格的观测和计算来确定。
因此,农历中连续两个月是大月或是小月的事是常有的。
甚至还出现过如1990年三、四月是小月,九、十、十一、十二连续四个月是大月的罕见特例。
那么多长时间加一个闰月呢?最好的办法就是求出回归年日数与朔望月的日数的最小公倍数:
我们希望m个回归年的天数与n个朔望月的天数相等,也就是应有等式:
在这个等式中我们不能直接求出m和n,但可以求出它们的比例。
这个比例的近似值分别为:
在这些分式中,分子表示回归年的数目,分母表示朔望月的数目。
例如第六个分数式 表示19个回归年中必须加7个闰月。
19个回归年中加7个闰月的结果比较:
19个回归年=19×365.2422=6939.6018(天)
一个朔望月有29.5306天,235个朔望月=235×29.5306=6939.6910(天)
19个回归年中加7个闰月后,矛盾消除得只差:6939.6910-6939.6018=0.0892(天),即2小时9分多,这已经是够精确的了。
所以,农历就采用了19年加7个闰月的办法,即“十九年七闰法”。
把回归年与农历年很好地协调起来,使农历的元旦(春节)总保持在冬末春初。
古人把235个朔望月称之为“闰周”。
农历置闰的方法可以使农历年的平均长度接近回归年,而农历中的月又有鲜明的月相特征,保持了公历和阴历两全其美的特点。
现在置闰的方法是两个冬至之间,如仅有12个月则不置闰,若有13个月即置闰。
置闰的月从“冬至”开始,当出现第一个没有“中气”的月份,这个月就是闰月,其名称是在前个月的前面加一个“闰”字。
农历闰哪个月,决定于一年中的二十四个节气。
我国农历将二十四个节气分为十二个节气和十二个中气。
二十四节气在农历中的日期是逐月推迟的,于是有的农历月份,中气落在月末,下个月就没有中气。
一般每过两年多就有一个没有中气的月,这正好和需要加闰月的年头相符。
所以农历就规定把没有中气的那个月作为闰月。
为什么会有闰月?
回归年的总长度为365.2422日,朔望月的长度为29.5306日。
十二个朔望月构成农历年,长度为29.5306×12=354.3672日,比回归年少10.88天即将近11天,每个月少0.91天近1天。
依此,如农历年某年春节为大雪纷飞的冬天,第二年的春节就会在季节上提前11天,第16个农历年就会出现在赤日炎炎的夏天。
如按十三个朔望月构成农历年,长度为29.5306×13=383.8978日,比回归年又多出18天多。
如果按上述规定制定历法,就会出现天时与历法不合、时序错乱颠倒的怪现象。
为了克服这一缺点,我们的祖先在天文观测的基础上,找出了“闰月”的办法。
保证农历年的正月到三月为春季,四月到六月为夏季,七月到九月为秋季,十月到十二月为冬季,也同时保证了农历岁首在冬末春初。
c语言确定闰月的步骤,怎么判断是闰月,农历闰月是如何确定的?相关推荐
- R语言数据格式转换函数、数据类型判断函数(numeric、character、vector、matrix、data.frame、factor、logical)、R语言数据格式类型转换
R语言数据格式转换函数.数据类型判断函数(numeric数值.character字符串.vector向量.matrix矩阵.data.frame数据表.factor因子.logical逻辑).R语言数 ...
- R语言all函数、any函数判断逻辑向量(logical vector)实战
R语言all函数.any函数判断逻辑向量(logical vector)实战 目录 R语言all函数.any函数判断逻辑向量(logical vector)实战 #基本语法
- c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...
#include #include /* fabs */ #ifdef _WIN32 // #include #endif //输出的数值不断递增,即使将10改成10.0,循环也没有中止,为什么? v ...
- C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句
原标题:C语言教学(九-上)if else判断语句 今天讲if else判断语句,简单理解就是进行条件判断,如果条件达到则执行if 里或else里的语句.先来看if. if的写法和for差不多,就是不 ...
- c 语言程序上机考试系统,计算机二级C语言上机考试操作步骤及流程
计算机二级C语言上机考试操作步骤及流程 二级C语言上机考试操作步骤 一.进入考试系统 单击桌面上的"考试系统"图标,进入考试启动界面."考试启动界面"如图1所示 ...
- 计算机二级c语言考试上机内容,计算机二级c语言上机考试操作步骤及流程
计算机二级c语言上机考试操作步骤及流程 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 二级 C 语言上机考试操作步骤一.进入考试 ...
- 【应用C】C语言实现离散数学合式公式的递归判断
实现合式公式的递归判断,是大二离散数学老师给我们出的一道编程题,当时也是第一次接触递归,苦思冥想一段时间后写出来了,逻辑应该没多大问题,也测试过一组数据,应该还有BUG,希望有人提醒我,在此分享给各位 ...
- C语言_回文字符串的判断
C语言_回文字符串的判断 程序目的 键盘任意输入一字符串,判断其是否会回文串. 设计思路 由于C语言中,字符串保存与char类型数组中,并且数组为随机存取结构.因此,可以设置前后标记a,b.参数a从0 ...
- 使用C语言的七个步骤
文章目录 使用C语言的七个步骤 一:定义程序目标 二:设计程序 三:编写代码 四:编译 五:运行程序 六:测试和调试程序 七:维护和修改代码 一些需要提醒的地方 编译机制 C编程的基本策略 名词概念解 ...
- C语言 输入一个字符,并判断这个字符属于哪一类字符
C语言 输入一个字符,并判断这个字符属于哪一类字符. #include<stdio.h> int main () {char ch;ch = getchar();putchar(ch);i ...
最新文章
- swift实现提示框第三方库:MBProgressHUD
- 如何提高做事效率,达成目标协作?
- ML顶会论文都可复现吗?来挑战一下,还能拿500美元补贴
- 云计算服务在小企业中的意义如何?
- linux rar安装
- 职场中不要问程序员这五类问题
- 给老板做PPT必备:文字加拼音
- java中使用配置文件_Java中使用Properties配置文件的简单方法
- 三星Galaxy Note 10系列机模曝光:开孔全面屏实锤
- hutool的定时任务不支持依赖注入怎么办_可调度定时任务在SpringBoot中的实践
- (一)UI设计的一些常识
- Java基础编程题50道题
- linux 支持的中文字体,Linux 增加中文字体支持
- 工具推荐:最好用的pCap工具
- REUSE_ALV_GRID_DISPLAY_LVC
- SMB v1远程代码执行漏洞(CVE-2020-1301)复现
- git 冲突解决一把梭
- JavaWeb专栏之(一):什么是JavaWeb?
- RISCV-RoCC简介
- android ndk neon,Android NDK开发之 NEON使用介绍