Loading

考研机试 19.今年的第几天

 

时间:2021/03/03

 

一.题目描述

输入年、月、日,计算该天是本年的第几天。

输入描述

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出描述

输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。

题目链接

https://www.nowcoder.com/practice/ae7e58fe24b14d1386e13e7d70eaf04d?

tpId=40&tqId=21350&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking&tab=answerKey

 

二.算法

题解

主要区分输入的年份是平年还是闰年,还有使用辅助数组分别存储平年和闰年每月的天数可以方便运算。

重点

闰年的条件:

1.能被4整除但是不能被100整除

2.能被400整除

学会利用辅助数组

代码

import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
        
        Scanner in = new Scanner(System.in);
        int[] ping = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int[] run = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        
        while(in.hasNext()){
            int year = in.nextInt();
            int month = in.nextInt();
            int day = in.nextInt();
            int index = 0;
            
            if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
                
                for(int i = 0; i < month - 1; i++){
                    index += run[i];
                }
                
                index += day;
            }
            
            else{
                
                for(int i = 0; i < month - 1; i++){
                    index += ping[i];
                }
                
                index += day;
            }
            
            System.out.println(index);
        }
    }
    
}

 

posted @ 2021-03-03 16:17    阅读(41)  评论(0编辑  收藏  举报