CCF 日期计算(Java)

来源:互联网 发布:中科院人工智能 编辑:程序博客网 时间:2024/06/05 08:54

试题编号: 201509-2

试题名称: 日期计算

时间限制: 1.0s

内存限制: 256.0MB

问题描述:
  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。

输入格式
  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
  输入的第二行包含一个整数d,d在1至365之间。

输出格式
  输出两行,每行一个整数,分别表示答案的月份和日期。

样例输入
2015
80

样例输出
3
21

样例输入
2000
40

样例输出
2
9

import java.util.Scanner;public class T201509_2 {    static int y;    static int d;    static int m = 1;   // 从1月开始    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        y = sc.nextInt();        d = sc.nextInt();        sc.close();        boolean rn = false;     // 闰年        if((y%4==0 && y%100!=0) || y%400==0) // 是否闰年            rn = true;        while(d > 0){            switch (m) {            // 31天的月份            case 1:case 3:case 5:case 7:case 8:case 10:case 12:                cal(31);                break;            // 30天的月份            case 4:case 6:case 9:case 11:                cal(30);                break;            // 2月            case 2:                if(rn) cal(29);                else cal(28);                break;            }        }    }    /**     * 计算     * @param day   每一月的天数     */    static void cal(int day){        if(d > day){    // 剩余d超过一个月            d -= day;            m++; // 月份计数        }else{          // 剩余d就在本月            System.out.println(m);  // 月            System.out.println(d);  // 日            d = 0; // 退出主函数中的while循环        }    }}

这里写图片描述

原创粉丝点击