王道机试例题2.6 今年的第几天

王道机试例题2.6 今年的第几天

题目描述

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

输入描述:

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

输出描述:

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

示例1

输入

1990 9 20
2000 5 1

输出

263
122

#include<stdio.h>

int day[2][13] = {      //预处理 二维数组
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}
};

bool IsLeapYear(int y) {  //判断是否为闰年!
    return (y % 100 != 0 && y % 4 == 0) || (y % 400 == 0);
}

int main()
{
    int Y, M, D;
    while (scanf_s("%d%d%d", &Y, &M, &D) != EOF) {
        int number = 0;    //记录天数
        int row = IsLeapYear(Y);
        for (int i = 0; i < M; i++) {
            number += day[row][i];
        }
        number += D;
        printf("%d\n", number);
    }
    return 0;
}

日期类问题要注意 闰年!

每逢闰年,2月有29天。
闰年的判定规则:当年数不能被100整除时,若其能被4整除;或者能被400整除,为闰年。
注意:闰年并不严格按照每4年一次的规律出现!!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页