C 類實現求兩個日期之差

2021-10-23 02:18:24 字數 2540 閱讀 4523

這篇部落格是剛接觸c++的小白寫的第一篇部落格。

下面是本小白寫完這題所得:

1、類可以完全覆蓋結構體;

2、在類外應用 "[類名]+::+[函式名]+()"的形式定義類中的public型成員;

3、注意好第2點用類寫函式真的很便利;

4、函式頭中的形參也算乙個新的物件;

【問題描述】宣告乙個表示時間的類ctime,可以精確表示年、月、日、小時、分、秒,請計算兩個日期物件之間相隔的天數。

要求:1、包括私有成員年、月、日、小時、分、秒。

2、請使用建構函式實現的類的初始化工作,並判斷日期和時間的有效性。年月日時分秒應該在正確的範圍內。考慮閏年時候二月份的情況。時間的格式是xx:xx:xx,小時不是超過23,分鐘和秒不能超過59。

1)如果日期無效,則輸出 「date error! 」 並將年、月、日、小時、分、秒置為0。

2)如果時間無效,則輸出 「time error! 」 並將年、月、日、小時、分、秒置為0。

3)如果日期和時間都有效,則根據傳遞的引數初始化年、月、日、小時、分、秒。

4)建構函式的三個引數:小時、分、秒 設計為預設形成,其預設值為0。

5 ) 輸出"建構函式被呼叫"

3、請設計乙個拷貝建構函式,實現將引數的值全部傳遞給當前物件,同時輸出「拷貝建構函式被呼叫」

4、請設計乙個析構函式,同時輸出「析構函式被呼叫」

5、設計乙個成員函式 int daydiff(ctime t) ,用於計算當前物件與形參t之間的相隔的天數,注意相隔天數為大於等於0的正整數。注意閏年的問題。

6、設計乙個成員函式 showtime(),用於顯示日期,顯示格式為:2020/3/12 11:50:20

main函式已經給定,請補全其他**。

【樣例輸入1】

2020 3 12 11 50 20

【樣例輸出1】

建構函式被呼叫

2020/3/12 11:50:20

建構函式被呼叫

拷貝建構函式被呼叫

析構函式被呼叫

這兩天之間相隔了7376天

拷貝建構函式被呼叫

析構函式被呼叫

這兩天之間相隔了7376天

析構函式被呼叫

析構函式被呼叫

【樣例輸入2】

2100 2 29 10 29 59

【樣例輸出2】

date error!

建構函式被呼叫

0/0/0 0:0:0

建構函式被呼叫

析構函式被呼叫

析構函式被呼叫

【樣例輸入3】

2000 2 29 15 79 40

【樣例輸出3】

time error!

建構函式被呼叫

0/0/0 0:0:0

建構函式被呼叫

析構函式被呼叫

析構函式被呼叫

【樣例輸入4】

2007 9 31 12 89 89

【樣例輸出4】

date and time error!

建構函式被呼叫

0/0/0 0:0:0

建構函式被呼叫

析構函式被呼叫

析構函式被呼叫

今天c++老師第一次布置有關類的作業,題目不難,但是很長。需要理解和實現的東西比較多,是個練手的好題目。

寫部落格還不熟練,之後再回來完善吧。

#include//#include//結果輸出沒要求補零

using namespace std;

class ctime//宣告ctime類

bool ctime::islegalmonth()

bool ctime::islegalday()

case 4:

case 6:

case 9:

case 11:

case 2:

else

break;}}

return flag;

}bool ctime::islegaldate()

bool ctime::isvalid()

int truediff(int y1,int mo1,int d1,int y2,int mo2,int d2)

; for(int i=1;i=3)

days1+=isleapy1;

days1+=d1;

//cout<<"days1 is "<=3)

days2+=isleapy2;

days2+=d2;

//cout<<"days2 is "//

// else

//

// }

// return sum;

//}//這個地方沒想到函式頭那裡的形參就算乙個新物件了,導致一直多輸出一次"拷貝建構函式被呼叫"和"析構函式被呼叫"下面這片是正確輸出的**

int ctime::daydiff(ctime t)

else

}return sum;

}int main()

return 0;

}

MYSQL 兩個日期之差的各種計算

mysq 資料庫的 timestampdiff 函式 可以計算兩個日期相差的秒數 分鐘數 小時數 天數 週數 季度數 月數 年數,當前日期減少或者增加天數 周數等。select timestampdiff 型別,開始時間,結束時間 相差的秒數 select timestampdiff second,...

C語言小程式(三) 判斷兩個日期之差

輸入兩個日期,計算之間相差多少天。用了兩種方法實現,第二種利用結構體,比較清晰,其餘的都一樣。1.普通的寫法 include int leapyear int year int days int day1,int day2 if day1 0 day2 0 else for i day2 1 1 i...

C語言小程式 如何判斷兩個日期之差

1.普通的寫法 複製 如下 include int leapyear int year int days int day1,int day2 if day1 0 day2 0 else for i day2 1 1 i diff month day2 1 day2 2 day1 2 if day2 ...