01./* 02.* 程式的著作權和版本聲明部分 03.* Copyright (c)2013, 煙台大學電腦學院學生 04.* All rightsreserved. 05.* 檔案名稱:time .cpp 06.* 作 者:趙冠哲 07.* 完成日期:2013年4月12日 08.* 版本號碼: v1.0 09.* 輸入描述: 10.* 問題描述: 11.*/ #include <iostream>using namespace std;class Time{public:Time(int=0,int=0,int=0);void show_time( ); //根據is_24和from0,輸出適合形式-20:23:5/8:23:5 pm/08:23:05 pmvoid add_seconds(int); //增加n秒鐘void add_minutes(int); //增加n分鐘 void add_hours(int); //增加n小時 static void change24(); //改變靜態成員is_24,在12和24時制之間轉換static void changefrom0(); //改變靜態成員from0,切換是否前置0private:static bool is_24; //為true時,24小時制,如20:23:5;為flase,12小時制,顯示為8:23:5 pm static bool from0; //為true時,前置0,8:23:5顯示為08:23:05int hour;int minute;int sec;};Time::Time(int h,int m,int s){ hour=h,minute=m,sec=s;}bool Time::is_24=true;bool Time::from0=false;void Time::show_time(){ if(is_24) { if(from0) {cout <<(hour<10?"0":"")<<hour<<':'<<(minute<10?"0":"")<<minute<<':'<<(sec<10?"0":"")<<sec<< endl; } else { cout<<hour<<":"<<minute<<":"<<sec<<endl; } } else { if(from0) {cout<<(hour<10||(hour-12>=0&&hour-12<10)?"0":"")<<(hour>12?hour-12:hour)<<':'<<(minute<10?"0":"")<<minute<<':'<<(sec<10?"0":"")<<sec<<' '<<(hour>11?"pm":"am")<<endl; } else { cout <<(hour>12?hour-12:hour)<<':'<<minute<<':'<<sec<<' '<<(hour>11?"pm":"am")<<endl; } } } void Time::add_seconds(int s){ s=s+sec; sec=s%60; add_minutes(s/60);}void Time::add_minutes(int m){ m=m+minute; minute=m&60; add_hours(m/60);}void Time::add_hours(int h){ h=hour+h; hour=h%24;}void Time::change24(){ is_24=!is_24; if(is_24)cout<<"已經切換24小時制"<<endl; else cout<<"已經切換12小時制"<<endl;}void Time::changefrom0(){ from0=!from0; if(from0) cout<<"已經切換前置0輸出"<<endl; else cout<<"已經切換未前置0輸出"<<endl;}int main(){ Time t1(23,44,42),t2(4,45,9); cout<<"24小時制,不前置0"<<endl; cout<<" t1是"; t1.show_time(); cout<<" t2是"; t2.show_time();t1.add_hours(10);t2.add_hours(10);Time::changefrom0();cout<<"10小時後,切換前置0"<<endl; cout<<" t1是"; t1.show_time(); cout<<" t2是"; t2.show_time(); t1.change24(); cout<<"換一種制式"<<endl;cout<<" t1是"; t1.show_time(); cout<<" t2是"; t2.show_time(); return 0;}
運行結果: