package _____;
import java.util.Scanner;
public class wnl//万年历主类
{
    public static void main(String[] args)
    {
        
        menu();
        Scanner sc=new Scanner(System.in);
        int menu=sc.nextInt();
        if(menu==1)
        {
            System.out.println("(1)、请输入一个年份");
         
            int year=sc.nextInt();        
            boolean f1=pdrn(year);
            if(f1==true)
            {
                System.out.println("该年份是闰年");
            }
            else
            {
                System.out.println("该年份不是闰年,是平年");
            }
        }
        
        else if(menu==2)
        {        
            System.out.println("(2)、请输入几年几月份");
            int year=sc.nextInt();
            int month=sc.nextInt();
            int day=monthDay(year,month);
            System.out.println("该"+month+"月有"+day+"天");
        }
        else if(menu==3)
        {            
            System.out.println("(3)、请输入几年几月");
            int year=sc.nextInt();
            int month=sc.nextInt();
            int days=timesum(year,month);
            System.out.println(year+"年"+month+"月前距1900年1月1号有"+days+"天");
        }
        else
        {
            System.out.println("(4)、请输入你想打印几年几月");
            int year=sc.nextInt();
            int month=sc.nextInt();
            printCalendar(year,month);
        }
            
    }
    public static void menu()
    {
            
        System.out.println("请选择你想要测试的是哪一项");
        System.out.println("(1)判断闰年");
        System.out.println("(2)判断某年某月有多少天");
        System.out.println("(3)计算某年某月前距离1900年1月1日的总天数");
        System.out.println("(4)输出某年某月日历");            
    }
    public static boolean pdrn(int year)//判断闰年
    {
        if(year%400==0&&year%100==0)
        {            
            return true;
        }
        else if(year%4==0&&year%100!=0)
        {            
            return true;
        }
        else
        {
            return false;  
        }
    }
    public static int monthDay(int y,int m)//计算某个月天数
    {
        boolean f2=pdrn(y);
        if(m==2)//2月时候
        {
            if(f2==true)
            {
                return 29;
            }
            else
            {
                return 28;
            }
        }
        else if(m==4||m==6||m==9||m==11)
        {            
            return 30;
        }
        else
        {
            return 31;
        }
                
    }
    
    
    
    public static int timesum(int y,int m)//计算天数和
    {
        int days=0;
        if(y<1900)
        {
            System.out.println("请输入1900年以后的时间");//如果用户不小心输入1900年以前的时间,系统退出
            System.exit(-1);
        }
        for(int i=1900;i<y;i++)    
        {
            if(pdrn(i)==true)
            {
                days+=366;   //闰年加上366天
            }
            else
            {
                days+=365;   //平年加上365天
            }
            
        }
        for(int j=1;j<m;j++)
        {
            days+=monthDay(y,j);  //加上每个月的天数
        }
        return days;
        
    }

    public static void printCalendar(int y,int m)
    {
        int days=timesum(y,m);
        int blank=(days+1)%7;  
        int day=monthDay(y,m);
        System.out.println("日\t"+"一\t"+"二\t"+"三\t"+"四\t"+"五\t"+"六\t");
        for(int i=1;i<=blank;i++)
        {
            System.out.print("\t");
        }
        for(int i=1;i<=day;i++)
        {            
            System.out.print(i+"\t");
            if((i+blank)%7==0)
            {
                System.out.println();
            }
        }
        System.out.println();
    }
    
    
    

}//参考借鉴宋佳丽程序思路框架;