题目

从标准输入读入一个整数年份,输出 闰年平年

思路

闰年条件:能被 400 整除,或能被 4 整除且不能被 100 整除。按顺序写 if 或合并成布尔表达式,读入年份后输出是/否即可。

解题分析

格里高利闰年:能整除 400 的是闰年;否则能整除 4 但不能整除 100 的是闰年。1900 平、2000 闰,把条件写全比死记口诀更不容易漏。

完整程序

#include <stdio.h>

int main(void)
{
    int year;
    if (scanf("%d", &year) != 1) {
        return 1;
    }
    if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
        printf("闰年\n");
    } else {
        printf("平年\n");
    }
    return 0;
}

运行示例

输入:

2000

输出:

闰年

再试,输入:

1900

输出:

平年

其它写法

下面每种写法都是完整程序,输入输出格式与正文一致,便于对照。

分步判断闰年

逻辑与正文合并条件相同,拆成多层 if 方便对照规则顺序。

程序:

#include <stdio.h>

int main(void)
{
    int year, leap = 0;
    if (scanf("%d", &year) != 1) {
        return 1;
    }
    if (year % 400 == 0) {
        leap = 1;
    } else if (year % 100 == 0) {
        leap = 0;
    } else if (year % 4 == 0) {
        leap = 1;
    }
    printf("%s\n", leap ? "闰年" : "平年");
    return 0;
}

运行示例

输入:

2000

输出:

闰年