Red de conocimiento informático - Conocimiento del nombre de dominio - Programación de visualización de almanaque

Programación de visualización de almanaque

Este problema no es difícil, de hecho, es muy sencillo implementarlo paso a paso

Primero defina una matriz global para guardar el número de días del mes

int m[12]= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

La función principal está al final , pero lo escribiré primero

main()

{

int año, mes, día

int chose; /p>

while(1)

{

while(1) //Esto se selecciona para el procesamiento de tolerancia a fallas

{

printf("1:aaaa\n2:aaaa-mm \n3aaaa-mm-dd\4:salir\n")

scanf("d",amp;chose);

if(chosegt;=1amp;amp;choselt; =4)

break;

esle

printf("error\ninput\n ");

}

cambiar(eligió)

{

caso 1: y(); romper;

caso 2: ym(); romper;

caso 3: ymd(); romper

salir(0); }

}

}

Tres subfunciones para manejar las funciones que desea

Antes de completar estas funciones, varias subfunciones son necesarios para procesar algunos datos

El Capítulo Uno es calcular el día de la semana en el que es el primer día de un determinado año. Esto es muy importante

Principio

<. p>Calcule el número de días desde el 1 de enero del 1 d.C., porque el 1 de enero del 1 d.C. El día es lunes

Este cálculo es relativamente simple usando un bucle for, pero el valor es relativamente grande y puede ser simplificado

En primer lugar, hay un ciclo de 400 años, es decir, el día después de 400 años y el día de la semana de hoy es el mismo

400*365 97=146097 Este número es exactamente múltiplo de 7, por lo que se puede calcular dentro de 400 años.

Pero se puede simplificar, porque un año tiene 365 días y 364 es múltiplo de 7, por lo que hay uno más. un día en un año y un día más en un año bisiesto

Entonces esta función se puede escribir así

int ye(int año)

{

int y=año400;

int día=y, i

for(i=0; ilt; y ;i )

if(i4==0amp;amp;i100!=0)

día ;

return día7;

}

Esto devuelve el día de la semana en el que se encuentra el primer día del año. Puede diferir en uno o dos días. Es un problema con la fórmula. Ajústelo.

Calcular el primer día. de un determinado mes también es muy simple

int mo(int año, int mes)

{

int day=ye(. sí

r); //Llame a la subfunción anterior para calcular el primer día del año

if (juzgar el año bisiesto) //Esto cambia el número de días de febrero en la matriz global m

m [1]=29;

else

m[1]=28;

for(int i=0; ilt; mes -1; i )

day =m[i];

return day7

}

Después de completar estos dos sub- funciones, otras funciones lo harán Es relativamente simple, todo lo que queda es imprimir

La última función aún necesita hacer dos subfunciones, que se harán más tarde

void y(void)

{

int año;

int k, i, j

scanf("d", amp; año);

k= ye(año);

for(i=0; ilt; 12, i)

printf(" d \n", i 1 ); //Imprimir mes

printf("日一二三四五六\n" //Esto se puede escribir en inglés de 3 dígitos

for(j= 0;jlt;k;j)

printf(" "); //Imprime la vacante anterior, 4 espacios por unidad

for(j=1;jlt;=m[ i];j)

{

printf("4d",j);

if((j k)7==0)

printf("\n ');

}

k=(j m[i])7; //El número de vacantes anteriores en el próximo mes

if(k!= 0) //Si no es igual a cero, imprime una nueva línea. Si es igual a cero, entonces lo anterior ha impreso una nueva línea

printf("\ n");

}

}

La impresión del mes es similar a la del año

void y(void )

{

int año, boca;

p>

int k, i, j

scanf("d, d; ", amp; año, amp; boca);

if (juez año bisiesto) // Esto cambia el número de días de febrero en la matriz global m

m[1] =29;

else

m[1]=28

k=mo(año, boca);

printf( " d \n", boca 1); //Imprimir mes

printf("Día uno, dos, tres, cuatro, cinco 6\n"); English

for(j=0;jlt;k;j)

printf(" " //Imprime la vacante anterior, 4 espacios por unidad

for(j=1;jlt;=m[boca-1];j)

{

printf("4d",j);

si ((j k)7==0)

printf("\n');

}

}

La última función , es calcular tres números, el número de días que quedan en el año anterior, el número de días en los años siguientes y el número de días en los años intermedios

Suma los tres números