當前位置:編程學習大全網 - 編程語言 - 編程計算閏月

編程計算閏月

閏年

閏年:1。為了彌補人造年份規定與地球繞太陽實際公轉的時間差,2。人為時差彌補的年份是閏年。

要遵循的規律是:四年壹躍,百年不潤,四百年再潤。

if((年% 400 == 0)|(年% 4 = = 0)& amp;(年份% 100!= 0))//閏年的計算方法

詳情如下:

閏年是指公歷或夏歷中有閏日的年份,以及中國農歷中有閏月的年份。地球繞太陽壹周的周期是365天5小時48分46秒(365.438+09天),也就是回歸年。公歷平均壹年只有365天,比回歸年短約0.2422天。剩下的時間大概是四年中的壹天,加上第四年的二月,使得那壹年的日歷年是366天,而今年是閏年。現行公歷每400年有97個閏年。夏歷壹年平均只有354天,比農歷的12個月短0.3671天。為了使每個月的第壹天與新月重合,規定11年的結束每30年增加1天,今年的日歷年有355天,是閏年。作為中國農歷的壹種,每個月的天數取決於月虧空,壹年的時間以12個月為基準,正常年份比壹個回歸年大約少11天。為了使地球繞太陽的軌道閉合,也就是回歸年,每隔兩到四年增加壹個月,增加的壹個月就是閏月。有閏月的年份,有13個月,日歷年是384或385天。這壹年也被稱為閏年。

按照每四年壹個閏年計算,平均每年會計算0.0078天,400年後會增加3天左右。所以每400年會減少3個閏年。所以規定公歷年是整百,閏年必須是400的倍數,平年不是400的倍數。

這就是我們通常所說的:

四年壹躍,百年不躍,四百年再躍。

西歷中的“閏年”

陽歷中有閏日的壹年稱為閏年,反之則是平年365天,閏年366天。在公歷年中,正常年份的二月是28天,閏年的二月是29天。閏年平月的2月29日是閏日。

增加閏日的原因

目前公歷以回歸年為基準,壹個回歸年約為365.24220天。因為普通歷法只算365天,四年後會累計0.24220×4=0.9688天,大約等於壹天,所以每四年加壹個閏日來抵消這0.9688天。

閏年的計算方法

在公歷年表中,被4整除的年份大多是閏年,被400整除而不是被100整除的年份是閏年,被3200整除的年份不是閏年,比如1900是平年,2000是閏年,3200不是。

中國農歷的“閏年”

在中國農歷中,有閏月的壹年被稱為閏年。壹般年份是12個月,354或355天,閏年是13個月,383或384天。

程序設計中陽歷閏年的簡單計算方法:

設置年份年份

If (year可被4整除,不能被100整除)or year可被400整除。

那麽這壹年就是閏年

其他今年都是正常年份。

特定程序代碼:

#主模塊:

;月歷打印

;主程序設置輸入參數,BX=年,DL=月。

;調用子程序顯示

;作者:王睿

;2006-12-8

外部顯示:遠

Esccode equ 01h

向上equ 048h

向下equ 050h

左equ 04bh

右equ 04dh

dseg段

dw 0年

月數據庫0

溫度數據庫10 dup(0)

算dw?

ErrMsg db 0dh,0ah,"輸入非小數!$"

dseg結束

cseg片段

假設cs:cseg,ds:dseg

開始:

移動ax,dseg

移動ds,ax

調用GetYearMonth

Ws:

mov bx,年份

移動dl,月

呼叫遠ptr顯示

再次重申:

mov ah,0

int 16h

cmp ah,Esccode

je出口

cmp啊,起來

我下壹個

cmp啊,下來

我是獵物

cmp ah,左側

我是總理

cmp啊,對吧

je NextM

又是jmp

下壹個:

公司年度

jmp Ws

獵物:

十二月

jmp Ws

NextM:

inc月

cmp月,12

jbe skip0

mov月,1

公司年度

skip0:

jmp Ws

PreM:

十二月

cmp月,1

jae skip1

mov月,12

十二月

skip1:

jmp Ws

退出:

mov ah,4ch

int 21h

;**************************************************

GetYearMonth proc附近

推斧

推送cx

推送si

推di

輸入增益:

移動年份,0

移動月,0

mov si,0

重復性:

mov ah,1

int 21h

cmp al,0dh

我很高興

化學機械拋光鋁,20小時

我很高興

cmp鋁,1bh

我出去了

化學機械拋光鋁,30小時

jb錯誤

化學機械拋光鋁,39h

妳錯了

sub al,30h

mov溫度[si],al

公司si

jmp重復性

錯誤:

mov ah,9

lea dx,ErrMsg

int 21h

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

jmp輸入增益

恩迪:

mov bx,10

mov di,si

mov si,0

下壹位:

mov ah,0

溫度移動[si]

移動計數,di

子計數,si

十進制計數

mov cx,計數

jcxz skipY

lopmul: mul bx

循環lopmul

skipY:添加年份,ax

公司si

cmp si,di

jne NextYBit

;-年份輸入[年份]

推送dx

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

流行dx

jmp skiplap

ExitDos0:

jmp ExitDos

skiplap:

mov si,0

重復tM:

mov ah,1

int 21h

cmp al,0dh

我結束了

化學機械拋光鋁,20小時

我結束了

cmp鋁,1bh

我出去了

化學機械拋光鋁,30小時

jb錯誤

化學機械拋光鋁,39h

妳錯了

sub al,30h

mov溫度[si],al

公司si

jmp重復

EndMon:

mov di,si

mov si,0

mov bl,10

NextMBit:

溫度移動[si]

移動計數,di

子計數,si

十進制計數

mov cx,計數

jcxz skipM

lpmul: mul bl

循環lpmul

skipM:添加月份,al

公司si

cmp si,di

jne NextMBit

;-月份輸入[月份]

推送dx

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

流行dx

波普迪

波普斯

流行cx

爆破筒

浸水使柔軟

ExitDos:

mov ah,4ch

int 21h

GetYearMonth endp

cseg結束

結束開始

#打印模塊:

;***********************************

;錄入參數:bx =年dl =月。

;***********************************

公開展示

數據段

dw年?

月db?

leap db?

weekstr db "周壹至周五至周六THU ",' $ '

填充空白數據庫" $ "

fillblank4 db " $ "

fillblank3 db " $ "

c db?

y db?

第壹天db?

臨時數據庫?

MonthSize db?

數據結束

cseg片段

假設cs:cseg,ds:data

顯示過程遠

推送ds

移動軸,數據

移動ds,ax

移動年,bx

移動月,dl

mov dx,0

xor有限公司

mov ah,2

int 10h

mov ah,6

移動al,0

mov bh,01110000b

移動通道,0

mov cl,0

mov dh,24

mov dl,79

int 10h

mov ah,6

移動al,0

mov bh,01110100 b

移動通道,0

mov cl,25

mov dh,24

mov dl,79

int 10h

調用遠指針顯示

lea dx周刊

mov ah,9

int 21h

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

調用GetMonthSize以MonthSize表示當前月份的天數。

cmp月,2

ja跳過

添加月份,12

十二月

跳過:

mov bl,100

移動軸,年份

div bl

mov c,al

動起來,啊

mov cl,2

mov bl,c

shr bl,cl;int(c/4)

shl c,1;2*c

分段B1,c

添加bl,y

shr y,cl;int(y/4)

加bl,y;int(c/4)-2*c+y+int(y/4) ->提貨單

inc月

異或啊,啊

月移動

mov dx,13

mul dx

mov cx,5

div cx

xchg ax,bx

字節擴展為字

xchg ax,bx

加bx,ax;int(c/4)-2 * c+y+int(y/4)+int(13 *(m+1)/5)

mov ax,bx

mov cl,7

idiv cl

cmp ah,0

jG斯基帕德

加啊,7

斯基帕德:

mov bl,啊

mov第壹天,bl

;-計算當月的第壹天是星期幾。

mov cl,bl

移動通道,0

十二月cl

jcxz skipF

FillB:電影啊,9

lea dx,fillblank

int 21h

循環填充b

skipF:

mov cl,1

叫dispWeek日期已放入cl。

公司cl

公司bl

cmp bl,8

jb skipModle

mov bl,1

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

skipModle:

cmp cl,月尺寸

jbe脫臼

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

流行數碼相機

浸水使柔軟

顯示結束

;******************************************************************

GetMonthSize proc附近

推斧

推送dx

移動跳躍,0

移動軸,年份

mov ch,00000011b

和ch,al

mov bl,100

div bl

mov cl,ah

cmp通道,0

jne跳躍

cmp cl,0

jne skipLeap

移動軸,年份

mov bx,400

mov dx,0

分部bx

cmp dl,0

我跳過

跳躍:

jmp gmsize

skipLeap:

inc leap

gmsize:

月移動

化學機械拋光鋁,2

je返回2

化學機械拋光鋁,8

jb skipInc

inc al

skipInc:

測試鋁,1

jz returnEven偶數

mov MonthSize,31

jmp返回

returnEven偶數:

mov MonthSize,30歲

jmp返回

返回2:

莫夫·蒙特澤,28歲

cmp跳躍,0

我回來了

inc MonthSize

返回:

流行dx

pop bx

浸水使柔軟

GetMonthSize endp

;*****************************************************************

顯示周進程接近

推送cx

推送bx

推斧

推送dx

cmp cl,10

jae DoubleDig

lea dx,填充空白4

mov ah,9

int 21h

mov dl,cl

添加dl,30h

mov ah,2

int 21h

jmp返回

DoubleDig:

電影頻道,10

mov ah,0

移動鋁,氯

分部通道

mov cx,ax

mov ah,9

lea dx,fillblank3

int 21h

mov dl,cl

添加dl,30h

mov ah,2

int 21h

運動dl,ch

添加dl,30h

int 21h

後退:

流行dx

爆破筒

pop bx

流行cx

浸水使柔軟

顯示周結束

;*********************************************************

顯示過程遠

推送bx

推送dx

移動軸,年份

mov DH 10

異或si,si

下壹個:div dh

mov cl,ah

移動通道,0

公司si

推送cx

mov ah,0

cmp最大值,0

jne下壹個

mov cx,si

重復:pop dx

mov ah,2

添加dl,30h

int 21h

循環重復

mov dl,0dh

mov ah,2

int 21h

mov dl,0ah

mov ah,2

int 21h

月移動

mov ah,0

mov bl,10

div bl

mov cx,ax

mov dl,cl

mov ah,2

添加dl,30h

int 21h

運動dl,ch

添加dl,30h

int 21h

mov dl,0dh

mov ah,2

int 21h

mov dl,0ah

mov ah,2

int 21h

流行dx

pop bx

浸水使柔軟

顯示結束

;****************************************************

cseg結束

結束

  • 上一篇:迷宮1編程
  • 下一篇: 大師編程IC芯片數據碼地址如何找到對應的?
  • copyright 2024編程學習大全網