获得月份天数

获得月份天数

http://www.nowcoder.com/questionTerminal/13aeae34f8ed4697960f7cfc80f9f7f6

分析:

月份天数可以使用闰年平年判断然后打表输出,也可以使用口诀一三五七八十腊再输出。

题解:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int year = 0, month = 0;
    //设置好闰年和平年的每个月的天数
    int normal[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    int gap[] = {31,29,31,30,31,30,31,31,30,31,30,31};
    //循环读入年月
    while(scanf("%d %d", &year, &month) != EOF) {
        //判断是否为闰年,分别通过上述的数组中查询月份的天数
        if(year % 4 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            printf("%d\n", gap[month-1]);
        } else {
            printf("%d\n", normal[month-1]);
        }
    }
    return 0;
}

题解2:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int year = 0, month = 0;
    //循环输入年月
    while(scanf("%d %d", &year, &month) != EOF) {
        //闰年的判断
        if(year % 4 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            if(month == 2) { //如果是特殊月份
                printf("29\n");
                continue;
            }
        }
        if(month == 2)
            printf("28\n");
        else if(month == 1 || month == 3 || month == 5 || month == 7
                || month == 8 || month == 10 || month == 12) //在if语句中判断31天的月份
            printf("31\n");
        else //其余皆为30天的月份
            printf("30\n");
        }
    return 0;
}

总结:

if else 的嵌套使用,以及判断闰年平年的方法。

全部评论
勘误 闰年判断:((y%4==0)&&(y%100!=0))||(y%400==0);
1 回复 分享
发布于 2021-06-02 13:56
(year % 4 == 0 || (year % 4 == 0 && year % 100 != 0) 总感觉哪里不对,不应该是(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)吗???如果这样写,不是等效于year % 4 == 0一句吗 不过数组设置年,学到了!
1 回复 分享
发布于 2020-10-30 11:29
同意楼上两位的说法,这个官方题解的闰年判断有问题
点赞 回复 分享
发布于 2020-12-31 11:53
判断闰年条件错误,例如会将1900误判为闰年
点赞 回复 分享
发布于 2020-12-20 01:58

相关推荐

下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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