Red de conocimiento informático - Conocimiento del nombre de dominio - 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!

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

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 <

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:

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

;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>