【番杰的问答笔记】判断是否是闰年

1.题目描述:

请用一个逻辑表达式来判断某一年是否为闰年。

某一年份如果符合下边 A 或 B 其中一个,我们称之为闰年:
A. 能被 4 整除,但不能被 100 整除;
B. 能被 400 整除。

我的答案:
’ y % 4 + y % 100 && y % 400 == 0 ’

小甲鱼的答案:
’ (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ’

请问我的答案对不对呀?

2.回答

不对,首先你需要清楚 “ && ”与 “ == ”的运算优先级,
我没记错的话应该是后者高于前者,
所以你这个表达式的逻辑就是:
(y % 4 + y % 100 )&&( y % 400 == 0)
就相当于先算(y % 4 + y % 100 ),在判断( y % 400 == 0),最后取&&

1.先说:(y % 4 + y % 100 )
只要这个Y不为4和100的公倍数,那么这个结果肯定是大于等于1的,即逻辑真。
换而言之,y为4和100的公倍数,那么结果就为0,即逻辑假。

2.再说:( y % 400 == 0)
只要y是400的倍数,那么该表达式就为逻辑真。

3.整体来看:(y % 4 + y % 100 )&&( y % 400 == 0)
结合1和2所述,y只有两种取值方法。

1)y为4和100的公倍数(同样可以看成是400的倍数)
那么,(y % 4 + y % 100 )的结果为0,根据&&短路判断法(好像是这个名字),不用进行( y % 400 == 0)的判断,
即可得出该表达式的结果为假、

2)y不为4和100的公倍数(同样可以看成不是400的倍数)
那么,(y % 4 + y % 100 )的结果为大于等于1的数值,即逻辑真。
( y % 400 == 0)的结果,为假。
真 && 假,为假。
即可得出该表达式的结果为假、

所以综上所述,无论y取什么值,你的表达式的结果都为假。

3.追答

小甲鱼之所以写成:
(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
是因为他这里把闰年分成了“普通闰年”和“世纪闰年”,

“世纪闰年”的意思就是一个可以整除100的闰年,像2000年,1600年这种的,
除此之外的闰年都是“普通闰年”。

你直接写为y % 4 == 0,就相当于直接判断是不是闰年,不管它是普通的还是世纪的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值