藍橋杯-演算法提高-c++_ch04_02_修正版
阿新 • • 發佈:2019-01-02
演算法提高 c++_ch04_02_修正版
【題目描述】
實現一個時間類Time。將小時,分鐘和秒儲存為int型成員變數。要求該類中包含一個建構函式,訪問用的函式,一個推進當前時間的函式adv(),一個重新設定當前時間(即將當前時間設為00:00:00)的函式reset()和輸出結果函式print()。注意時間按數字式電子表格式顯示,即小時、分、秒分別用兩位表示,如果其中之一小於10,則前方補0,如22:01:00(中間不含空格),另外按該格式依次輸出時、分、秒後,以endl結尾。當輸入時間超出合法範圍(提示:注意上下界)時,請自動按照24小時制進行轉換,請務必注意時分秒為負值時的處理,如輸入25:00:61,則輸出應為01:01:01,輸入-1:-1:-1,應該輸出22:58:59。
第一步:依據題意定義Time類
class Time
{
// 請補充
};
第二步:利用如下測試程式對所編寫的Time類進行測試。
int main()
{
// 當前時間
int hour, minute, second;
// 時間增量
int incr_hr, incr_min, incr_sec;
cin >> hour >> minute >> second >> incr_hr >> incr_min >> incr_sec;
Time t( hour, minute, second );
t.print();
t.adv( incr_hr, incr_min, incr_sec );
t.print();
t.reset();
t.print();
return 0;
} 輸入格式 輸入一行,6個int型別數字,以空格間隔。 輸出格式 輸出三行時間,時間格式為24小時制,xx:xx:xx,英文標點,不足兩位十位數補0。
第一行為初始時間,第二行為adv()後的時間,第三行為reset()後的時間 示例1輸入 0 0 0 0 0 -1 示例1輸出 00:00:00
23:59:59
00:00:00
示例3: 示例2輸入 25 63 61 0 0 1 示例2輸出 02:04:01
02:04:02
00:00:00 示例3輸入 -50 -24 0 50 45 90 示例3輸出 21:36:00
00:22:30
00:00:00
實現一個時間類Time。將小時,分鐘和秒儲存為int型成員變數。要求該類中包含一個建構函式,訪問用的函式,一個推進當前時間的函式adv(),一個重新設定當前時間(即將當前時間設為00:00:00)的函式reset()和輸出結果函式print()。注意時間按數字式電子表格式顯示,即小時、分、秒分別用兩位表示,如果其中之一小於10,則前方補0,如22:01:00(中間不含空格),另外按該格式依次輸出時、分、秒後,以endl結尾。當輸入時間超出合法範圍(提示:注意上下界)時,請自動按照24小時制進行轉換,請務必注意時分秒為負值時的處理,如輸入25:00:61,則輸出應為01:01:01,輸入-1:-1:-1,應該輸出22:58:59。
第一步:依據題意定義Time類
class Time
{
// 請補充
};
第二步:利用如下測試程式對所編寫的Time類進行測試。
int main()
{
// 當前時間
int hour, minute, second;
// 時間增量
int incr_hr, incr_min, incr_sec;
cin >> hour >> minute >> second >> incr_hr >> incr_min >> incr_sec;
Time t( hour, minute, second );
t.print();
t.adv( incr_hr, incr_min, incr_sec );
t.print();
t.reset();
t.print();
return 0;
} 輸入格式 輸入一行,6個int型別數字,以空格間隔。 輸出格式 輸出三行時間,時間格式為24小時制,xx:xx:xx,英文標點,不足兩位十位數補0。
第一行為初始時間,第二行為adv()後的時間,第三行為reset()後的時間 示例1輸入 0 0 0 0 0 -1 示例1輸出 00:00:00
23:59:59
00:00:00
示例3: 示例2輸入 25 63 61 0 0 1 示例2輸出 02:04:01
02:04:02
00:00:00 示例3輸入 -50 -24 0 50 45 90 示例3輸出 21:36:00
00:22:30
00:00:00
#include<iostream> using namespace std; class Time { public: Time(int h,int m,int s); void adv(int addH,int addM,int addS); void reset(); void print(); private: int hour,minute,second; }; Time::Time(int h,int m,int s) { hour=h; minute=m; second=s; } void Time::adv(int addH,int addM,int addS) { hour+=addH; minute+=addM; second+=addS; } void Time::reset() { hour=0; minute=0; second=0; } void Time::print() { while(second<0||second>=60||minute<0||minute>=60||hour<0||hour>=24) { if(second>=60) { second=second-60; minute++; } else if(second<0) { second=60+second; minute--; } if(minute>=60) { minute=minute-60; hour++; } else if(minute<0) { minute=60+minute; hour--; } if(hour>23) { hour=hour-24; } else if(hour<0) { hour=24+hour; } } if(hour>=0&&hour<=9) cout<<0<<hour<<":"; else cout<<hour<<":"; if(minute>=0&&minute<=9) cout<<0<<minute<<":"; else cout<<minute<<":"; if(second>=0&&second<=9) cout<<0<<second<<endl; else cout<<second<<endl; } int main() { int hour,minute,second; int incr_hr,incr_min,incr_sec; cin>>hour>>minute>>second>>incr_hr>>incr_min>>incr_sec; Time t(hour,minute,second); t.print(); t.adv(incr_hr,incr_min,incr_sec); t.print(); t.reset(); t.print(); return 0; }