题解 | #获得月份天数#

获得月份天数

https://www.nowcoder.com/practice/13aeae34f8ed4697960f7cfc80f9f7f6

#include <stdio.h>
#include <stdlib.h>  // 引入用于标准库函数的头文件,比如exit函数

// 判断是否为闰年的函数,返回1表示是闰年,返回0表示不是闰年
int is_leap_year(int year) {
    return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}

int main() {
    int y, m;
    int n1[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int n2[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    while (scanf("%d %d", &y,
                 &m) == 2) {  // 更规范的写法判断scanf是否成功读取两个整数
        if (m < 1 || m > 12) {
            fprintf(stderr,
                    "输入的月份不合法,请重新输入1到12之间的整数作为月份!\n");
            // 清空输入缓冲区,避免无效数据残留影响下一次输入读取
            while (getchar() != '\n');
            continue;
        }

        int* days = is_leap_year(y) ? n2 :
                    n1; // 根据是否闰年选择对应的天数数组指针
        printf("%d\n", days[m]);

    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务