¿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.
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; p>
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++)
{ p>
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
{; p>
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;
}