乙個判斷日期的程式設計問題

2021-09-30 05:07:27 字數 1708 閱讀 7985

題目:

已知公元1年

1月1日是星期一。請編寫乙個程式,只要輸入年月日,就能自動回答當天是星期幾。

要求:

為測試該程式的方便,請將計算星期的演算法盡量放入乙個函式中,輸入和輸出檢查可用其它函式來處理。

為簡單起見,不考慮西元前的日期。

(a)解答思路:計算輸入日期與公元1年

1月1日所相差的天數,具體如下:

總天數=公元

1年到輸入日期上一年年底天數

+輸入年份的

1月到上月月底天數

+輸入日期的天數 (

b)閏年滿足條件:

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

(1)分析各種輸入情況,結合程式輸出結果,進行等價類劃分,並給出詳細測試用例

(2)根據(

1)所劃分的等價類,進行邊界值分析,並給出具體的測試用例

(3)決策表測試法

①列出輸入變數

month

、day

、year

的有效等價類;(條件樁)

②分析程式的規格說明,給出問題規定的可能採取操作

;(動作樁)

③畫出決策表(簡化)

④根據決策表,給出詳細測試用例

我給出的軟體設計程式如下所示:

# include

using

namespace std;

const

int start_year=1;

intmain()

else

else }

}int new_year;

new_year=input_year-start_year;

int first_days;

first_days=new_year*365;

int num(0);

for(int i=start_year;i!=new_year;i++)

else num=num+1;

}else

continue;

}int second_days(0);

second_days=first_days+num;

int total_days(0);

bool leap;

if(input_year%4==0)

else leap=true;

}else leap=false;

if(leap)

//算整個天數

}else }

int number(0);

number = total_days%7;

switch(number)

//具體星期幾

cout<

}return 0;}

程式的設計思想是:

第一步——算出公元後第一年到輸入的年份的去年的天數(以365天算);

第二步——算出公元後第一年到輸入年份的去年的閏年個數,並且加上第一步算出來的天數。這樣就能精確的計算出從公元第一年到輸入年份的去年最後一天的總天數;

第三步——算輸入年份的第一天到所輸入的時間的天數,加上前面的精確天數,算總天數;

第四步——求模,算星期幾。

但是軟體測試後,發現了乙個問題——有些天數的星期顯示是錯誤的。應該說邏輯上這個程式設計沒有任何的問題。但是軟體測試的時候,確實出現了問題。

以下貼出該程式的軟體測試案例,求高手指正!  

判斷乙個日期輸入是否正確。

本程式用於驗證輸入從公元元年後的乙個日期,然後判斷日期是否正確。若輸入錯誤日期,則繼續進行此流程,直至日期正確。rq函式中先對月份和年份進行判斷,然後在switch中對二月做閏年的處理,判斷其是否正確。include int rq int y,int m,int d if year 1 switch...

安卓 根據日期判斷星期 給乙個日期判斷是星期幾

只需要知道三個 日期 月份 年份 就可以秒算任意年份任意日期的星期數 方法1 日期 指的是日期數,如3月18號,日期 為18。4月7號,日期 為7。2 月份 需要小小記憶 五月 是 0 八月 是 1 二月 三月 十一月 是 2 六月 是 3 九月 十二月 是4 四月 七月 是5 一月 十月 是 6 ...

程式設計題 判斷乙個區間的素數個數問題

package 經典程式設計題 author pc 題目 判斷101 200之間有多少個素數,並輸出所有的素數 素數 prime number 又稱質數,有無限個。乙個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數 否則稱為合數。也可以這樣...