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 及以后无性能差异,编译器会优化成相同汇编

测试时容易忽略的边界年份

只测 200020252100 不够,这几个年份才是关键验证点:

  • 1600:能被 400 整除 → 是闰年(验证世纪闰年)
  • 170018001900:能被 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实例