Tarea de ingeniería de software, espero que alguien con habilidades pueda ayudarme a hacerla antes de las 11 p.m. del 14 de enero, ¡gracias!
Año bisiesto: 1. Para compensar la diferencia horaria entre el año artificial y la revolución real de la Tierra alrededor del sol, y 2. Para compensar la diferencia horaria artificial entre años, este año es bisiesto.
La regla que se sigue es: cada cuatro años hay un salto, no ocurrirá dentro de cien años, y volverá a ocurrir dentro de cuatrocientos años.
if((año % 400 == 0)|(año % 4 == 0)&(año % 100 ! = 0))//El método de cálculo del año bisiesto
Detalles como sigue:
Año bisiesto se refiere a un año en el que hay un día bisiesto en el calendario gregoriano (calendario gregoriano) o en el calendario lunar, y hay un mes bisiesto en el antiguo calendario lunar chino. . La Tierra orbita alrededor del Sol en un periodo de 365 días, 5 horas, 48 minutos y 46 segundos (365,24219 días), que es el año tropical. El año del calendario gregoriano tiene sólo 365 días, lo que es aproximadamente 0,2422 días más corto que el año tropical. El tiempo restante son unos cuatro años para acumular un día, y se agrega febrero en el cuarto año, de modo que la duración del año del calendario gregoriano. son 366 días y este año es bisiesto. El calendario gregoriano actual tiene 97 años bisiestos cada 400 años. El calendario lunar sólo tiene 354 días en un año, lo que es 0,3671 días menos que los 12 meses del calendario lunar. Para hacer coincidir el primer y segundo día de cada mes, se estipula que se sumará un día al año. Al final de cada 30 años en 11 años, el año calendario de este año es 355. Hoy es un año bisiesto. El antiguo calendario lunar chino es un calendario lunisolar. El número de días de cada mes es deficiente según el calendario lunar. El tiempo del año se basa en 12 meses. Un año normal es aproximadamente 11 días más corto que un año tropical. Para adaptarse al ciclo de la revolución de la Tierra alrededor del Sol, cada dos o cuatro años se añade un mes al año tropical. Este mes añadido se denomina mes bisiesto. En los años con un mes bisiesto añadido, hay 13 meses y el año calendario es de 384 o 385 días, lo que también se conoce como año bisiesto.
Según el cálculo de un año bisiesto cada cuatro años, cada año se contabilizarán una media de 0,0078 días extra, de modo que al cabo de cuatrocientos años, habrá unos tres días extra, por tanto, tres bisiestos. años se reducirá cada cuatrocientos años. Es por esto que se estipula que el año calendario debe ser múltiplo de 400 para ser bisiesto, y no el año calendario que sea múltiplo de 400 para ser bisiesto.
Esto es lo que solemos llamar "año bisiesto":
Hay un año bisiesto cada cuatro años, no hay ningún año bisiesto en cien años y hay otro año bisiesto en cuatrocientos años.
"Año bisiesto" en el calendario occidental
Un año con un día bisiesto en el calendario gregoriano se llama año bisiesto, en caso contrario es año bisiesto. El calendario gregoriano tiene 365. días, y un año bisiesto tiene 366 días. En el calendario gregoriano, febrero en años bisiestos tiene 28 días y febrero en años bisiestos tiene 29 días. El 29 de febrero es un día bisiesto en un año bisiesto.
La razón para agregar días bisiestos
El calendario gregoriano actual utiliza el año tropical como base para calcular el "año", y el año tropical es aproximadamente igual a 365,24220 días. Dado que el calendario gregoriano solo cuenta 365 días en un año normal, después de cuatro años se acumularán 0,24220 x 4 = 0,9688 días, que es aproximadamente un día, por lo que se agrega un día bisiesto cada cuatro años para compensar estos 0,9688 días.
Cómo calcular los años bisiestos
En el calendario gregoriano, la mayoría de los años que son divisibles por 4 son años bisiestos. Los años que no son divisibles por 100 pero sí por 400 son años bisiestos. y son divisibles por 3200. El año no es bisiesto. Por ejemplo, 1900 es un año normal, 2000 es un año bisiesto y 3200 no es un año bisiesto.
"Año bisiesto" en el calendario lunar chino
En el antiguo calendario chino, los años con meses bisiestos se denominan años bisiestos. Un año típico tiene 12 meses y 354 o 355 días, mientras que un año bisiesto tiene 13 meses y 383 o 384 días.
Utilice la programación para calcular simplemente los años bisiestos en el calendario gregoriano:
Establezca el año en año
Si (el año es divisible por 4 y no divisible por 100) o el año puede ser divisible por 400 Divisible
Entonces el año es bisiesto
Entonces el año es bisiesto
Entonces el año es un año bisiesto
El año es bisiesto en el calendario lunar chino
.
Año bisiesto
else Este año es un año ordinario
Código de programa específico:
#Módulo principal:
Impresión de calendario
; p>
;El programa principal configura el parámetro de entrada, BX=Año, DL=Mes
;Visualización de subrutina de llamada
;Por wangrui
. 2006-12 -8
extrn display:far
Esccode equ 01h
Arriba equ 048h
Abajo equ 050h
Equ. izquierdo 04bh
Equ. derecho 04dh
segmento dseg
Año dw 0
Mes db 0
temp db 10 dup(0)
count dw ?
ErrMsg db 0dh,0ah, "¡La entrada NO es decimal!$"
dseg end
segmento cseg
Supongamos cs:cseg,ds:dseg
inicio:
mov ax,dseg
mov ds, ax
llamar a GetYearMonth
Ws:
mov bx,año
mov dl,mes
llamar a far ptr display
otra vez:
je PreM
cmp ah,Right
je NextM
jmp otra vez
NextY:
año inc
jmp Ws
PreY:
año dic < p>
jmp Ws
SiguienteM:
inc Mes
cmp Mes,12
jbe skip0
mov Mes,1
inc Año
skip0:
jmp Ws
PreM:
dic Mes
p>
cmp Mes,1
jae skip1
mov Mes,12
dic Año
saltar1:
jmp Ws
Salir:
mov ah,4ch
int 21h
;******* ******************************************* *
Proceso GetYearMonth cerca de
push ax
push cx
push si
push di
entrada de nuevo:
p>mov Año,0
mov Mes,0
mov si,0
repetición:
mov ah, 1
entrada de nuevo.
int 21h
cmp al,0dh
je EndY
cmp al,20h
je EndY
cmp al,1bh
je ExitDos0
cmp al,30h
jb Err
cmp al,39h
ja Err
sub al,30h
mov temp[si],al
inc si
jmp repetirY
Err:
mov ah,9
lead dx, ErrMsg
int 21h
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
entrada jmp de nuevo
EndY:
mov bx,10
mov di,si
mov si,0
NextYBit:
mov ah,0
mov al,temp[si]
mov count,di
sub cuenta,si
dec cuenta
mov cx,cuenta
jcxz skipY
lopmul: mul bx
loop lopmul
skipY: add Year,ax
inc si
cmp si,di <
jne NextYBit
;----------------------------------Ponga el año en [Año]
push dx
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
jmp skiplap
ExitDos0:
jmp ExitDos
skiplap:
mov si,0
repeatM:
mov ah,1
int 21h
cmp al, 0dh
je EndMon
cmp al,20h
je EndMon
cmp al,1bh
je ExitDos
cmp al,30h
jb Err
cmp al,39h
ja Err
sub al, 30h
mov temp[si],al
inc si
jmp repetirM <
EndMon:
mov di,si
mov si,0
mov bl,10
SiguienteMBit:
mov al,temp[si] < / p>
recuento de movimientos,di
recuento de subs,si
recuento de dec
mov cx,recuento
jcxz skipM
lpmul: mul bl
bucle lpmul
skipM: agregar mes,al
in
c si
cmp si,di
jne NextMBit
;-------------------- ------ -----El mes se coloca en [Mes]
push dx
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop di
pop si
pop cx
pop ax
ret
ExitDos:
mov ah ,4ch
int 21h
GetYearMonth endp
cseg termina
fin de inicio
#PrintModule: p>
;************************************
;Parámetro de entrada: bx = Año dl =Mes
;********************************* **
visualización pública
segmento de datos
Año dw ?
Mes db ?
Año bisiesto db ?
weekstr db " LUN TUR WEN JUE VIE SAB SUN",'$'
fillblank db " $"
fillblank db " $"
fillblank4 db " $ "
fillblank3 db " $"
c db ?
y db ?
primer día db ?
base de datos temporal ?
base de datos MonthSize ?
los datos terminan
segmento cseg
supongamos cs:cseg ,ds:data
mostrar proc lejos
push ds
mov ax,data
mov ds,ax
mov Año,bx
mov ax,data
mov ds,ax
mov Año,bx
p>mov Mes ,dl
mov dx,0
xor bh,bh
mov ah,2
int 10h
mov ah,6
mov al,0
mov bh, 01110000b
mov ch,0
mov cl,0
mov dh,24
mov dl,79
int 10h
mov ah,6
mov dl ,79
mov ah,6
p>
mov al,0
mov bh, 01110100b
mov ch, 0
mov cl,25
mov dh,24
mov dl,79
int 10h
llamar lejos ptr dispYM
lea dx, semanastr
mov ah,9 <
int 21h
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
llamar a GetMonthSize; poner el número de días del mes actual en MonthSize;
p>