万年表

  1 import java.util.Scanner;
  2 
  3 public class Calenda {
  4 public static void main(String[] args) {
  5     System.out.println("************请输入万年历************");
  6     
  7     Scanner sc=new Scanner(System.in);//键盘获取
  8     //用户输入
  9     System.out.println("请输入年份: ");
 10     int year=sc.nextInt();
 11     System.out.println("请输入月份:");
 12     int month=sc.nextInt();
 13     
 14     int i;//自1900年起的所有年份
 15     int tian=31;//判断是否为大月份
 16     int days=0;//1900.1.1作为起点
 17     
 18     for(i=1900;i<year;i++)
 19     {
 20         if((i%4==0 && i%100!=0) || (i%400==0)) //能被4整除且不能被100整除的年份为闰年
 21         {
 22             days+=days+366;
 23         }
 24         else
 25         {
 26             days+=days+365;
 27         }
 28     }
 29     int day=0;//天数变量
 30     //计算输入月份与1月1日之间的天数
 31     for(int a=1;a<=month;a++)
 32     {
 33         switch(a)
 34         {
 35         case 1:
 36         case 3:
 37         case 5:
 38         case 7:
 39         case 8:
 40         case 10:
 41         case 12:
 42             tian=31;
 43             if(a<month)
 44             {
 45                 day=day+tian;//
 46             }
 47             break;
 48         case 4:
 49         case 6:
 50         case 9:
 51         case 11:
 52             tian=30;
 53             if(a<month)
 54             {
 55                 day=day+tian;
 56             }
 57             break;
 58         case 2:
 59             //平均与闰年的2月份天数分别是28天和29天
 60             if((i%4==0 && i%100!=0) || (i%400==0))
 61             {
 62                 tian=29;
 63                 if(a<month)
 64                 {
 65                     day=day+tian;
 66                 }
 67                 else
 68                 {
 69                     tian=28;
 70                     if(a<month)
 71                     {
 72                         day=day+tian;
 73                     }
 74                 }
 75                 break;
 76             }
 77         }
 78         days=days+day;//总天数
 79         //判断输入年月的第一天是星期几(一直1900年一月一日星期一)
 80         int firstDayofMonth=0;
 81         firstDayofMonth=1+days%7;
 82         if(firstDayofMonth%7==0)
 83         {
 84             firstDayofMonth=0;//星期天
 85         }
 86         
 87         System.out.println("星期天	星期一	星期二	星期三	星期四	星期五	星期六	");
 88         for(int n=0;n<firstDayofMonth;n++)//打印空格
 89         {
 90             System.out.print("	");
 91         }
 92         //打印天数
 93         for(int v=1;v<=tian;v++)
 94         {
 95             System.out.print(v+"	");//空格+日期=7则换行
 96             if((firstDayofMonth+v)%7==0)
 97             {
 98                 System.out.println();
 99             }
100         }
101     }
102 }
103 }

打印出1~12月份的日历表,剩余部分省略

原文地址:https://www.cnblogs.com/zjm1999/p/10115926.html