La velocidad de escribir un calendario perpetuo en lenguaje c
Requiere ingresar el año y el mes para determinar si es un año bisiesto;
Ingresar el año, el mes y el día para determinar el día del semana;
Ingrese el año e imprima un calendario de 12 meses;
Ingrese el año y el mes e imprima el calendario de este mes;
Requiere múltiples funciones a implementar. */
# include & ltstdio.h & gt
# include & lttime.h & gt
# include & ltstring.h & gtint calendario【12 】【6】【7】;/*Calendario*/
char * semana【】= {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes" ","Sábado"};
char * nombre del mes【】= {"enero", "febrero", "marzo", "abril", "mayo", "junio" ","julio" ,
"agosto","septiembre","octubre","noviembre","diciembre"};
int mes día【】= {31, 28, 31, 30 , 31, 30, 31, 30, 31, 30, 31};
char * menu【】= {/*menú de operación*/
"1. Ingrese el número del año para verificar si es un año bisiesto.\n",
"2 Ingrese el año, mes y día para verificar los días hábiles.\n",
"3. . Ingrese el año y el mes y genere el calendario del mes actual.\n",
"4. Ingrese el año y genere el calendario de todos los meses.\n",
"0. Exit,\n"
};/*Juzga si el año pasado por el parámetro año es bisiesto*/
Años que abarcan
{
Si (! (año %4) y & año %100||! (año%400)) devuelve 1
En caso contrario, devuelve 0
} /*Ingrese el año, mes y día para determinar el día de la semana y use la fórmula de Zeller w = y+[y/4]+[c/4]-2c+[26(m+1)/ 10]+D-1.
w es el resultado de la semana, y son los dos últimos dígitos del año, c son los dos primeros dígitos del año, m es el mes, 3≤m≤14, es decir, cuando p>
Cuando m es menor o igual a 2, se debe contar hasta 65438+3 meses y 65438+4 meses del año anterior, y finalmente W debe tomar módulo 7.
*/
Días laborables enteros (años enteros, meses enteros, días enteros)
{
int w, y, c , m, d;
c = año/100
si (mes & lt3){
m = 12+mes; p>y = año % 100-1;
}
En caso contrario{
m =mes;
y = año % 100 ;
}
d = día
w = y+y/4+c/4-2 * c+26 * (m+1) /1d-1;
return (w % 7+7) % 7;
}/*Ingrese el año y el mes e imprima el calendario de este mes*/
Anulado cada mes (año entero, mes entero)
{
int día laborable, I, j;
if (mes = = 2)
if (IsLeapyear (año)) mes día [1] + = 1
día laborable = día laborable (año, mes, 1
printf("% s\n",Monthname[mes-1]);
printf("Dom. Lunes Martes. Miércoles Jueves.
Viernes Sábado\n ");
for (I = 1, j = día laborable; i<=mesdía[mes-1]; i++, j++) {
Calendario[ Mes- 1] [j/7] [j % 7] = I
}
para(I = 0; I<6;i++){
para( j = 0; j & lt7;j++)
{
if (calendario[mes-1][I][j]== 0) printf(" % 5c", "");
else printf ("%-5d", calendario [mes-1] [I] [j]); ("\n");
}
} anular todo el mes (int año)/*Ingrese el año e imprima el calendario de 12 meses*/ p>
{
int I;
for (I = 1; i<=12;i++){
Mensual (año, i);
getch(); /*Presione cualquier tecla para continuar*/
}
}void main (no válido)
{
int año, mes, día, I, n, día laborable;
memset (& calendario, tamaño de (calendario), 0 /*Inicializar calendario mensual*/
for(I = 0;i<5;i++)
printf("% s", menú[I]);
mientras(1) {
printf("Seleccione un menú: ");
scanf("% d", & ampn
printf("\n") ;
Cambiar (n)
Caso 1:
printf ("Ingrese el año: ");
scanf ("% d", & año) ;
if (es año bisiesto (año)) printf ("\n % d es un año bisiesto.\n", año);
else printf ("% d es no es un año bisiesto.\n", año);
Pausa;
Caso 2:
printf ("Por favor ingrese el año, mes y día: " );
scanf ("% d % d % d", & año y año. Mes y hora. Día);
printf ("\n"); p> p>
día laborable = día laborable (año, mes, día);
printf ("Ese día es %s\n", semana[día laborable]);
Break ;
Caso 3:
printf ("Ingrese el año y el mes, y luego genere el calendario del mes: ");
scanf ("% d % d ", & año y año. Mes);
printf ("\n");
Mensual (año, mes);
Caso 4; :
printf ("Ingrese el año, luego generará el calendario de ese año: ");
scanf ("% d", & año); >
printf("\n");
Mes completo (año);
Descanso;
Caso 0:
Regresar;
Predeterminado:
printf("El número que ingresó no es válido.\n");
Interrupción;
}
}
getch(); /*Presiona cualquier tecla para salir del programa*/
}Este programa está disponible~~Espero que pueda ayudarte ~~~