前引
在探索如何判断平年和闰年前, 我们先了解一下为什么会有闰年的设置,平年和闰年判断方法,平年和闰年的定义和区别。
1.闰年的设置
闰年的设置是为了弥补地球绕太阳公转的实际时间与公历规定的时间之间的差异。地球绕太阳一周的实际时间是365天5小时48分46秒,为了简化,公历规定一年为365天。因此,每4年增加一天,即2月份增加一天,形成闰年。
2.平年和闰年判断方法
-
普通年份的判断:
(1)能被4整除的年份是闰年。如:2004年是闰年,因为它能被4整除。
-
世纪年份的判断:
-
(1)能被100整除但不能被400整除的年份不是闰年。如:1900年不是闰年。
-
(2)能被400整除的年份是闰年。如:2000年是闰年。
3.简便判断方法:
- (1)如果年份的最后一个数字是双数,则它可能是闰年或平年。如果该年份是整百年份且能被400整除的是闰年,否则是平年。
- (2)如果年份的最后一个数字是单数,则这个年份一定是平年。如:2019年是平年。
3.平年和闰年的定义和区别
平年和闰年的主要区别在于一年的天数和2月份的天数。平年有365天,其中2月份有28天;而闰年有366天,2月份有29天。这是为了弥补地球绕太阳公转的实际时间与公历规定的时间之间的差异。
一.怎么实现代码
1.为了可以一直输入年份进行判断而不退出程序,可以使用while (1)
创建了一个无限循环,让用户不断输入年份,直到输入-1结束循环
2.使用if.... else语句进行输出平年和闰年
3.将判断条件(能被100整除但不能被400整除或能被400整除)翻译为语句(year%4==0 && year%100!=0 || year%400==0
)
注:
1.(能被100整除但不能被400整除)是一个并列语句,使用逻辑与(&&)
2.(或能被400整除)是一个分支语句,使用逻辑或(||)
3.整除:表示可以被除尽,使用取模(余数)运算符(%)使余数等于0(==0),注意不是‘=’(=是赋值,不是等于)
4.不能被整除:表示取模后含有余数,可以表示为x % d !=0(注:x表示用户输入的数字 d表示需要除以的数字 % 表示取模 !=表示不等于)
二.代码内容
#include <stdio.h> // 包含标准输入输出库
int main() // 主函数
{
int year; // 定义一个整型变量,用于存储用户输入的年份
printf("请输入年份(输入-1结束):\n"); // 提示用户输入年份,并说明输入-1可以结束程序
while (1) // 创建一个无限循环,直到用户输入-1才会跳出循环
{
scanf("%d", &year); // 从标准输入读取一个整数,存储到year变量中
if (year == -1) // 检查用户输入的年份是否为-1,如果是,则跳出循环
{
break;
}
// 判断年份是否为闰年
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
printf("%d是闰年\n", year); // 如果年份满足闰年的条件,输出该年份是闰年
}
else
{
printf("%d不是闰年\n", year); // 如果年份不满足闰年的条件,输出该年份不是闰年
}
}
return 0; // 程序正常结束
}
三.实现原理
-
变量声明:
int year;
声明了一个整型变量year
,用于存储用户输入的年份。 -
提示用户输入:
printf("请输入年份(输入-1结束):\n");
提示用户输入年份,并说明输入-1可以结束程序。 -
循环读取用户输入:
while (1)
创建了一个无限循环,直到用户输入-1才会跳出循环。 -
读取用户输入:
scanf("%d", &year);
从标准输入读取用户输入的年份,并将其存储在year
变量中。 -
判断是否为-1:
if (year == -1)
判断用户输入的年份是否为-1,如果是,则跳出循环。 -
判断是否为闰年:
if(year%4==0 && year%100!=0 || year%400==0)
使用条件语句判断年份是否为闰年。year%4==0
:年份能被4整除。year%100!=0
:年份不能被100整除。year%400==0
:年份能被400整除。
- 如果上述条件满足,则输出该年份是闰年;否则,输出该年份不是闰年。
-
返回0:
return 0;
表示程序正常结束。
四.注意事项
- 输入格式:用户必须输入一个整数,否则程序可能会出现错误。
- 循环结束:用户可以通过输入-1来结束程序的运行。
- 闰年判断:闰年的判断逻辑是正确的,符合国际标准。