以乙個閏年檢測程式為例的非法字元異常輸入檢測

2022-08-01 01:51:12 字數 1590 閱讀 7831

閏年:閏年(leap year)是為了彌補認為曆法規定造成的年度天數與地球實際公轉週期的時間差而設立的。補上時間差的年份為閏年。

簡單來說,置潤法則是:四年一閏,百年不閏,四百年再閏。即規定公曆年份是整百數的,必須是400的倍數才是閏年,不是400的倍數的就是平年。

例如:1950-2023年間的閏年:

1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,

2004,2008,2012,2016,2020,2024,2028,2032,2036,2040,2044,2048.

基於高階語言c++,一種基本的檢測乙個年份是閏年與否的判斷語句就是:

if(year%4==0&&year%100!=0)||(year%400==0)

cout<

但我們必須考慮到,在乙個閏年檢測程式中,使用者的輸入可能存在多種多樣的非法輸入。例如:

1. 輸入的年份中包含非法字元,如:2040abc;

2. 輸入的年份為非正整數,如:-2008、0等;

3. 輸入的年份為小數(浮點數),如:2005.6;

4. 其他錯誤輸入.

所以針對以上的各種可能異常,我給出以下測試用例:

使用者輸入:

預計輸出:

實際輸出:

2008

閏年  

閏年2009

平年  

平年2008abc

非法字元

非法字元

-2008

非法年份      

非法年份

2008.5

非法字元

非法字元

以下是針對如上測試用例的測試結果截圖:

為了檢測使用者輸入中的非法字元,我將使用者的輸入定義為string型別,並採取逐位檢測的方法確認使用者的輸入是否為合法的正整數年份:

//判斷使用者的輸入是否包含非法字元,如:字母、漢字:

for(int i=0;i'9') || (year.at(i)

}若果使用者的輸入合法,再將使用者的string型別輸入換位int型,進行進一步的判斷處理:

stringstream ss;

ss << year;

ss >> number; //獲取全部為數字的使用者輸入

以下是我該檢測程式全部**的截圖:

發布乙個npm包 以angular為例

做前端的同學和npm打交道的次數可不算少,npm上有許多好用的庫可以幫我們節省很多時間,那麼今天我們就嘗試發布乙個angular元件到npm上。首先,我們來建立乙個angular專案,不同於平時我們使用 來建立專案,我們本次使用 ng g library npm klx lib prefix myp...

遞迴思想分析 以乙個簡單的例子為例

遞迴演算法分析 以乙個最簡單的例子為例 題目 用遞迴的方法將整數按高到低位輸出相應的數字字元.例如 對整數 603,將輸出3 個數字6,0,3 源程式 include int main void fun n return 0 void fun int k 分析 咱們以這個例子來解釋遞迴。遞迴就是自己...

程式設計操控乙個硬體的步驟(以LED為例)

首先我們需要明白的是 暫存器是操控硬體的api介面。我們如果想操控led是通過gpio來間接操控的,實質是操控soc的gpio的的暫存器,從而控制led這個硬體工作。led本身有2個接線點,乙個是led的正極,乙個是led的負極。led這個硬體的功能就是點亮或者不亮,物理上想要點亮一顆led只需要給...