C++ 怎么判断闰年 C++ 年份整除逻辑判断代码实现【练习】
发布时间 - 2026-01-31 00:00:00 点击率:次判断闰年的核心条件是:能被4整除但不能被100整除,或者能被400整除。该规则精确区分常规闰年(如2025)、普通世纪年(如1900,非闰年)和世纪闰年(如2000,是闰年)。
判断闰年的核心条件是什么
闰年不是简单看能否被 4 整除,C++ 中必须严格按公历规则:能被 4 整除但不能被 100 整除,或者能被 400 整除。漏掉任一条件都会错判,比如 1900 能被 4 和 100 整除,但不能被 400 整除,所以不是闰年;而 2000 是闰年。
用 if-else 写最清晰的判断逻辑
别用嵌套三目运算符硬凑一行,可读性和维护性差。直接拆成带注释的分支更稳妥:
bool isLeapYear(int year) {
if (year % 400 == 0) return true;
if (year % 100 == 0) return false;
if (
year % 4 == 0) return true;
return false;
}
-
year % 400 == 0优先级最高,覆盖世纪闰年特例 -
year % 100 == 0紧随其后,排除普通世纪年(如 1900) -
year % 4 == 0放最后,处理常规闰年(如 2025) - 所有整数取模操作在 C++ 中对负数行为未定义,确保
year为正整数
用单个 return 表达式也行,但要注意运算符优先级
如果坚持写成一行表达式,必须加括号明确逻辑分组,否则 && 和 || 的结合性容易出错:
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
- 不加括号写成
year % 4 == 0 && year % 100 != 0 || year % 400 == 0语法合法,但易误读 -
&&优先级高于||,实际等价于上式,但靠记忆优先级不如显式括号可靠 - 该写法在 C++17 及以后无性能差异,编译器会优化成相同汇编
测试时容易忽略的边界年份
只测 2000、2025、2100 不够,这几个年份才是关键验证点:
-
1600:能被 400 整除 → 是闰年(验证世纪闰年) -
1700、1800、1900:能被 100 整除但不能被 400 整除 → 都不是闰年 -
2025:能被 4 整除且不能被 100 整除 → 是闰年 -
0或负数:标准 C++ 不定义公元 0 年,输入前应校验非正年份是否允许
闰年逻辑本身很简单,真正容易翻车的是对“世纪年”和“400 年周期”的理解偏差,而不是代码写法。
# c++
# 运算符
# if
# 的是
# 才是
# 误读
# 很简单
# 这几个
# 不加
# 中对
# 但要
# 也行
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在Windows环境下新建FTP站点并设置权限?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel如何使用模型观察者?(Observer代码示例)
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
如何在IIS中配置站点IP、端口及主机头?
JavaScript如何实现错误处理_try...catch如何捕获异常?
高防服务器租用首荐平台,企业级优惠套餐快速部署
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
网站制作报价单模板图片,小松挖机官方网站报价?
如何在万网主机上快速搭建网站?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
简历在线制作网站免费版,如何创建个人简历?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
如何快速搭建自助建站会员专属系统?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何在VPS电脑上快速搭建网站?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Laravel怎么在Blade中安全地输出原始HTML内容
如何挑选优质建站一级代理提升网站排名?
如何快速生成ASP一键建站模板并优化安全性?
如何快速建站并高效导出源代码?
如何在Windows服务器上快速搭建网站?
Firefox Developer Edition开发者版本入口
Laravel如何使用withoutEvents方法临时禁用模型事件
微信小程序 闭包写法详细介绍
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Laravel如何使用Gate和Policy进行授权?(权限控制)
JS碰撞运动实现方法详解
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
微信小程序 HTTPS报错整理常见问题及解决方案
JS中对数组元素进行增删改移的方法总结
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Python自动化办公教程_ExcelWordPDF批量处理案例
佛山网站制作系统,佛山企业变更地址网上办理步骤?
深入理解Android中的xmlns:tools属性
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Swift中switch语句区间和元组模式匹配
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
使用spring连接及操作mongodb3.0实例


