zoukankan      html  css  js  c++  java
  • 万年历(二)

    根据if与for编写万年历程序

    上一篇中有判断年月的天数,这一篇中有几个要点

    ①计算1900年1月1日之前的总天数

    ②计算输入月份的天数(比如输入5,应计算1-4月的总天数)

    ③星期几计算:1+总天数%7    

    ④每行输入7个

    完成万年历完整代码如下

      1 import java.util.Scanner;
      2 public class Calendars{
      3     public static void main(String []argas)
      4     {
      5         Scanner input=new Scanner(System.in);
      6         int year;//年份
      7         int month;//月份
      8         int days=0;//
      9         boolean isRn;//用于判断是否是闰年,true为闰年,false为平年
     10         int totalDays=0;
     11         System.out.println("******************使用万年历******************");
     12         System.out.println("请输入年份");
     13         year=input.nextInt();
     14         System.out.println("请输入月份");
     15         month=input.nextInt();
     16         //判断是否是闰年
     17         if((year%400==0)||(year%4==0&&year%100!=0))
     18         {
     19             isRn=true;
     20             System.out.println(year+"年是闰年");
     21         }
     22         else
     23         {
     24             isRn=false;
     25             System.out.println(year+"年是平年");
     26         }
     27         //计算年的总天数
     28         for(int i=1900;i<year;i++)
     29         {
     30             if((i%400==0)||(i%4==0&&i%100!=0))
     31             {
     32                 totalDays+=366;
     33             }
     34             else
     35             {
     36                 totalDays+=365;
     37             }
     38         }
     39         //计算输入月份之前的天数之和
     40         for(int i=1;i<=month;i++)
     41         {
     42             switch(i)
     43             {
     44                 case 1:
     45                 case 3:
     46                 case 5:
     47                 case 7:
     48                 case 8:
     49                 case 10:
     50                 case 12:
     51                     days=31;
     52                     break;
     53                 case 2:
     54                     if(isRn)
     55                     {
     56                         days=29;
     57                     }
     58                     else
     59                     {
     60                         days=28;
     61                     }    
     62                     break;
     63                 case 4:
     64                 case 6:
     65                 case 9:
     66                 case 11:
     67                     days=30;
     68                     break;
     69                 default:
     70                     System.out.print("输入的月份有误");
     71                     break;
     72             }
     73             //输入月的天数保存到days中,但不累加
     74             if(i!=month)
     75             {
     76                 totalDays+=days;
     77             }
     78         }
     79         
     80         //求出星期几,就是前面	的个数
     81         int beforeDays;
     82         beforeDays=1+totalDays%7;
     83         if(beforeDays==7)
     84         {
     85             beforeDays=0;//代表星期天,0个	
     86         }
     87         System.out.println("星期天	星期一	星期二	星期三	星期四	星期五	星期六");
     88         //先打印	
     89         for(int i=0;i<beforeDays;i++)
     90         {
     91             System.out.print("	");
     92         }
     93         
     94         for(int i=1;i<=days;i++)
     95         {
     96             System.out.print(i+"	");
     97             //满7个换行
     98             if((i+beforeDays)%7==0)
     99             {
    100                 System.out.println();
    101             }
    102         }
    103         
    104         //System.out.print(year+"年"+month+"月共有"+days+"天");
    105         
    106     }
    107 }
    View Code
  • 相关阅读:
    array、vector、forward-list、list、deque的扩容,栈与队列,基于范围的for循环
    带默认参数值的函数
    :: 访问全局变量
    using来定义类的别名,typedef,#define
    const int* p
    内存
    变量的定义,强制类型转换
    HTTP请求流程(一)----流程简介
    DIY一个DNS查询器:程序实现
    详解C/C++函数指针声明
  • 原文地址:https://www.cnblogs.com/wzy330782/p/5260077.html
Copyright © 2011-2022 走看看