时间: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); } } }