Imprime el calendario mensual de un año determinado o el día de la semana

Imprimir el calendario mensual de un año determinado

tema

El 1 de enero de 2008 es el martes. Para determinar si 2008 es un año bisiesto, ingrese cualquier mes e imprima el calendario para ese mes en ese año. Se requiere que esté ordenado por semana, con el lunes en la primera columna.

análisis

Primero: Lo que se investiga es el juicio de los años bisiestos.

 - 1、能整除400的。 year%400==0
 - 2、能整除4同时不能整除100 。year%4==0&&year%100!=0

Segundo: el 1 de enero de 2008 es martes, lo que significa que el resto es 2 cuando dividimos uniformemente 7. En este momento, cuando contamos los días, debemos comenzar en base a 2 para calcular la semana correcta.

Creo que los puntos de inspección son estos dos.
¿Por qué deberíamos considerar los años bisiestos? Los años bisiestos son 29 días en febrero y 28 días en años normales, así que esto es una consideración.
Echemos un vistazo al código específico.

Código (código fuente haga clic aquí)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int days(int flag, int month);
void fun6(){    
	int year = 2008;    //这里的月份按照题设是给定了,可以定义输入
	int flag = 0;    
	int month, week, day = 2;    
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)    {  
	      flag = 1;       
	      printf("2008 year is yes\n");    
	}    
	printf("please input 1-12\n");    
	scanf("%d", &month);    
	while (1)    {        // 判断输入的月份是否正确 
		if (month > 12 || month < 0)        {
         		printf("please input 1-12\n");      
        	        scanf("%d", &month);        }        
                else        {           
                        break;     
                } 
          }
         for (int i = 1; i <= month - 1; i++)    {      
            day += days(flag, i);    
         }   
        printf("\n");  
        printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "Mon", "Tuse", "Wed", "Thur", "Fri", "Sat", "Sun");
        int size = days(flag, month);  
        for (int i = day, j = 1; i <= day + size && j <= size; i++, j++)    {     
     	   week = i % 7;      
     	   if (i == day  && week != 1)        {      
     	         if (week == 0)   {        
     	                 printf("\t\t\t\t\t");         
     	          }
                  for (int i = 0; i < week - 2; i++)   {    
                     printf("\t");        
                 } 
           }
        switch (week)    {        
        	case 1:            
        	      printf("%d", j);           
        	      break;       
        	 case 2:         
        	 case 3:        
        	 case 4:         
        	 case 5:         
        	 case 6:           
        	      printf("\t%d", j);            
        	      break;        
        	 case 0:           
        	      printf("\t%d\n", j);
                      break;
                 default:           
                      break;       
            }   
       }
   }
   // 计算天数
   int days(int flag, int month){    
   	switch (month)    {    
   		case 1:   
   	        case 5:    
   	        case 3:    
   	        case 7:    
   	        case 8:    
   	        case 10:    
   	        case 12:        
   	        	return 31;    
   	        case 4:    
   	        case 6:    
   	        case 9:    
   	        case 11:        
   	        	return 30;    
   	        case 2:        
   	        	if (flag == 1)        {            
   	        		return 29;       
   	        	 }else        {            
   	        	       return 28;       
   	        	  }    
   	    }
 }
 int main(int argc, char const *argv[]){    
 	 fun6();   
 	 return 0;
}

efecto

Al ingresar 2,
Inserte la descripción de la imagen aquí

Ingrese 5 para ver el efecto

Inserte la descripción de la imagen aquí
No recuerdo una pregunta específica en el examen de posgrado de 2019. Probablemente sea similar. En ese momento, la sala de examen era vaga, el tiempo escaseaba y no era perfecta. Escribamos sobre eso hoy.

Si tiene alguna pregunta, deje un mensaje y discútalo. Si hay una solución mejor, deje un mensaje.

Supongo que te gusta

Origin blog.csdn.net/honeylife/article/details/100574556
Recomendado
Clasificación