Red de conocimientos turísticos - Guía para elegir días propicios según el calendario chino - ¿Quién puede ayudarme a explicar el significado de cada paso de este programa de calendario perpetuo en lenguaje C? Escribe una explicación después de cada paso.

¿Quién puede ayudarme a explicar el significado de cada paso de este programa de calendario perpetuo en lenguaje C? Escribe una explicación después de cada paso.

# incluir & ltstdio.h & gt% archivo de encabezado

char mes día【】= {31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31} cada mes; Matriz de porcentaje de días

char MonthDayLeap【】= {31, 29, 31, 30, 31, 30, 31, 30, 31, 30, 31} Porcentaje de días por mes en años bisiestos

char * WeekDayName【】= {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes" y "Sábado"};

/* Obtener valor clave*/

char getkey()

{

char c, s[10];

scanf("% s" , s); % Ingresa el número de serie de la función que deseas utilizar

c = s[0];

Devuelve c; % Devuelve el número de serie ingresado, ya que es sólo 1,2 3,4, por lo que sólo se devuelve el primer dígito.

}

anular pestaña de impresión (int n)

{

mientras (n & gt; 0)

{

printf("\t"); en blanco

n-;

}

}

/*Juzga si es un año bisiesto*/

char es año bisiesto (int y)

{

return (y % 4 = = 0 & amp;& ampy%100!= 0 || y%400 == 0)? 1:0); cuando el año actual es igual a 0 y el resto 100 no es igual a 0 o el resto 400 es igual a 0, devuelve 1; de lo contrario, devuelve 0.

}

/*Calcular el día de la semana*/

int WeekDay (int y, int m, int d) % y es el año m es el mes d es la fecha.

{

int semana

si (m = = 1) m = 13

si (m = = 2) m; = 14;

semana = (d+2 * m+3 * (m+1)/5+y+y/4-y/10y/400)% 7;

Devolver semana;

}

/*Consulta semana*/

char queryweekday()

{

int y, m, d, semana, c = 0

Do

{

Printf("Ingrese el año; , mes y día (oooo oo oo)\n"); ingresa la hora

scanf("% d % d % d", &y & m & d);

semana = día laborable (y, m, d); llame a la función anterior para calcular el día de la semana.

printf ("%d año %d mes % d día es la semana %s, ¿quieres continuar consultando (Y/N)?", y, m, d, WeekDayName [semana]); salida

c = getkey(); Ingrese si desea realizar la consulta.

}

mientras(c = ='Y'| | c = ='Y');

Devuelve c;

}

/*Mostrar mes*/

Anular mostrar mes (int y, int m)

{

int d, dt , semana

Semana = día laborable (y, m, 1);

if (isLeapYear (y))

dt = MonthDayLeap[(m-1) )% 12]; Algoritmo de año bisiesto

Otros

dt = mes día【(m-1)% 12】; Algoritmo de año promedio

para (d = 0;d<7;d++)

{

printf("\t % s", nombre del día de la semana[d]);

}

printf("\n");

printtab(semana);

for(d=1;d<=dtd++)

{

printf("\t % 6d", d);

if (Día de la semana(y, m, d) == 6)

printf( "\n ");

}

printf("\n");

}

/*Mostrar mes*/

char printmonth()

{

int y, m, c = 0

hacer

{

Printf("Ingrese el año y el mes (oooo oo)\n");

scanf("% d % d",&y&m);

imprimir pestaña (3);

printf ("% d año\t%d mes\n", y, m

showmonth (y, m); función para calcular el mes

Printf ("¿Quieres seguir consultando (Y/N)?");

c = getkey();

}

mientras(c = ='Y'| | c = ='Y');

Devolver c;

}

/*Mostrar año*/

char printyear()

{

int y, m, c = 0

do;

{

Printf("Ingrese el año (oooo)\n");

scanf("%d",&y);

p>

imprimir pestaña(3);

printf("% d calendario\n",y);

for(m = 1; m<= 12; m++)

{

imprimir pestaña (4);

printf ("% d mes\n", m);

showmonth(y, m);

}

printf("\N¿Quieres continuar consultando (Y/N)? ");

c = getkey();

}

mientras(c = ='Y'| | c = ='Y');

Regresar c;

}

/*Salir de la consulta*/

char toexit()

{

char c;

Printf("¿Realmente quieres salir (Y/N)?");

c = getkey();

if(c = ='Y'| | c = ='Y')

Devuelve 1;

Otro

Devuelve 0;

}

/*Consulta de interfaz principal del calendario perpetuo*/

char getmenu()

{< / p>

printf("\n * * * * * * * * * * * * * * * * * * * * * * * * * \n");

printf ( "\tPrograma de consulta de calendario\n");

printf("1\tComprueba el día de la semana según la fecha\n");

printf("2\ t Mostrar un calendario de un mes\n");

printf("3\tMostrar un calendario de un año\n");

printf("4\tSalir\n ") ;

printf("* * * * * * * * * * * * * * * * * * * * * * * * * \n");

Printf( "Seleccione (1-4): ");

return getkey()

}

int main(int argc, char *argv). 【】 )

{

char doexit=0, elige

hacer

{

/*Obtener menu* /

elegir = obtener menu(); Llame a la función para obtener el elemento de función seleccionado.

/*Procesamiento de clasificación*/

Cambiar (seleccionar)

{

Caso "1":

consultar día de la semana(); semana

Descanso;

Caso "2":

imprimir mes();

Caso "3":

imprimir año();

Pausa;

Caso "4":

hacer salida = salir(); darse por vencido

Pausa;

Valor predeterminado:

Pausa;

}< / p>

}

Y (!salir);

Devuelve 0;

}