關於閏年問題的思考

2021-06-25 19:15:27 字數 1078 閱讀 4236

如果某一年的年份能被4整除,但是不能被100整除,那麼這一年就是閏年,此外能被400整除的年份也是閏年。

我對這個問題一直沒有弄清楚,最近經過仔細考量,發現自己以前對這個問題存在兩個思維誤區:

1.能被4整除,不能被100整除是閏年。那麼能被4整除,也能被100整除是不是閏年?

2.「能被400整除」與「能被4整除,也能被100整除」是什麼關係?

首先解決第乙個疑惑:

能被4整除也能被100整除:100,200,300,400……

能被400整除:400,800……

由此可見能被4整除也能被100整除可能是閏年,也可能不是閏年。

存在這個疑惑的時候,很容易寫成#include

int main(void)

else if(year%400==0)

else

}             

else if(year%400==0)

else

return 0;

}讓後解決第二個疑問:

能被400整除的數必定能被4和100整除,但是能被4和100整除的數就不一定能被400整除了。意思就是說能被400整除的數是能被4和100整除的數的一種情況;#include

int main(void)

else if(year%400==0)

else

}else if(year%400==0)

else

return 0;

}else if(year%400==0)

糾正這兩個誤區之後的**應該是這樣的:

#include

int main(void)

else if(year%400==0)

else

}else

return 0;

}這個問題,經過我反覆思考之後,我認為就是:「能被4整除的年份裡,不能被100或者能被400整除的年份就是閏年。」這個意思,但是按照題目所表述「如果某一年的年份能被4整除,但是不能被100整除,那麼這一年就是閏年,此外能被400整除的年份也是閏年。」我真的覺得有歧義。但是為什麼會導致這些錯誤理解,我也不清楚,不知道是題目中存在語病還是我自己思維問題。

軟體測試 閏年判定以及輸入問題思考

閏年 leap year 是為了彌補因人為曆法規定造成的年度天數與地球實際公轉週期的時間差而設立的。補上時間差的年份為閏年。閏年共有366天。其中二月為29天,閏年,每四年一次,每一百年不是閏年,每四百年又是一次閏年。測試中,我們要編寫如下邏輯結構的閏年測試 1 獲取年份資訊 2 測試是否為4的公倍...

關於閏年的那些事兒

公曆閏年 小學時老師就教過每4年就有乙個閏年,但年份能被100整除時不閏,比如 2000年是閏年,因為其能被400整除,但1900年不是閏年,其能被4整除,但能被100整除。用php來實現這個演算法就是 是否是閏年 四年一閏,百年不閏,四百年再閏 param int year 年份 return b...

關於揹包問題的思考

在0 1揹包問題中的f陣列初始化過程中,存在如下思考方式 1 若要求揹包必須放滿,則初始如下 f 0 0 f 1.v 表示 無窮。表示當容積為0時,只接受乙個容積為0的物品入包。2 若要求揹包可以空下,則初始化如下 f 0.v 0 表示任意容積的揹包都有乙個有效解即為0。具體解釋如下 1.初始化的f...