题目
从标准输入读入一个整数年份,输出 闰年 或 平年。
思路
闰年条件:能被 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输出:
闰年