获得月份天数解析

146 阅读1分钟

获得月份天数

题目:

BC54

描述

KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。

输入描述:

多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。

输出描述:

针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。


示例1

输入:

2008 2

输出:

29

思路

首先除2月份之外 月份天数均为固定 大月31 小月30

2月份 则需要判断是否为闰年 闰年判断方法 可以整除4但是不能整除100 或者 可以整除400

利用switch结构

case 大月 就都是 days = 31

case 小月 就都是 days = 30

case 2 判断是否为闰年赋上对应的天数

一个类别的case 直到最后一个case再break'

另一种思路: 直接定义一个数组 硬编码月份天数 利用哈希的思想 month对应下标的天数

如果是闰年 并且 月份为2 那么就再加个1


代码

#include <stdio.h>int main() {
    int year = 0;
    int month = 0;
    while (scanf("%d %d", &year, &month)!=EOF) {
        int days = 0;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            case 2:
                days = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 29 : 28;
                break;
        }
        printf("%d\n", days);
    }
    return 0;
}

注意: scanf 如果正确接受 会返回接受的个数 如果出现异常 或者已经到文件末尾 则返回EOF