這篇部落格是剛接觸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 ...