[cpp] /* * 程序的版權和版本聲明部分 * Copyright (c)2012, 煙台大學計算機學院學生 * All rightsreserved. * 文件名稱: x.cpp * 作者:徐本錫 * 完成日期: 2013年 月 日 * 版本號: v1.0 * 輸入描述: * 問題描述: * 程序輸出: */ //我的代碼: #include <iostream> #include<iomanip> #include <string> using namespace std; bool t1,t2; int choose; class Time{ public: Time(int=0,int=0,int=0); void Choose(); void show_time( ); //根據is_24和from0,輸出適合形式-20:23:5/8:23:5 pm/08:23:05 pm void add_seconds(int n); //增加n秒鐘 void add_minutes(int n); //增加n分鐘 void add_hours(int n); //增加n小時 static void change24(); //改變靜態成員is_24,在12和24時制之間轉換 static void changefrom0(); //改變靜態成員from0,切換是否前導0 private: 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:05 int hour; int minute; int sec; }; //下面寫出靜態成員的初始化及各成員函數的定義…… bool Time::is_24 =true; bool Time::from0 =true; Time::Time(int h,int m,int s) { hour=h;minute=m;sec=s; if(hour>23||minute>59||sec>59) { cout<<"時間有誤!"; exit(1); } } void Time::Choose () { int choose; cout<<"24小時制,前導0,請按1。"<<endl<<"24小時制,不前導0,請按2。"<<endl<<"12小時制,前導0,請按3。"<<endl<<"12小時制,不前導0,請按4。"<<endl; cin>>choose; switch(choose) { case 1:t1=true;t2=true; break; case 2:t1=true;t2=false;break; case 3:t1=false;t2=true;break; case 4:t1=false;t2=false;break; } } void Time::show_time() { if(Time::is_24==t1&&Time::from0==t2)//格式(22:00:00) { cout<<setfill('0')<<setiosflags(ios::right); cout<<setw(2)<<hour<<":"<<setw(2)<<minute<<":"<<setw(2)<<sec; } if(Time::is_24==t1&&Time::from0!=t2)//格式(22:0:0) { cout<<hour<<":"<<minute<<":"<<sec; } if(Time::is_24!=t1&&Time::from0==t2)//格式(08:06:00 am) { if(hour<12) { cout<<setfill('0')<<setiosflags(ios::right); cout<<setw(2)<<hour<<":"<<setw(2)<<minute<<":"<<setw(2)<<sec<<" am"; } if(hour==12) { cout<<setfill('0')<<setiosflags(ios::right); cout<<setw(2)<<hour<<":"<<setw(2)<<minute<<":"<<setw(2)<<sec<<" pm"; } else { hour-=12; cout<<setfill('0')<<setiosflags(ios::right); cout<<setw(2)<<hour<<":"<<setw(2)<<minute<<":"<<setw(2)<<sec<<" pm"; } } if(Time::is_24!=t1&&Time::from0!=t2)//格式(8:6:0 am) { if(hour<12) { cout<<hour<<":"<<minute<<":"<<sec<<" am"; } if(hour==12) { cout<<hour<<":"<<minute<<":"<<sec<<" pm"; } else { hour-=12; cout<<hour<<":"<<minute<<":"<<sec<<" pm"; } } } void Time::add_seconds(int n)//增加n秒鐘 { sec+=n; if(sec>=60) { add_minutes(sec/60); sec%=60; } } void Time::add_minutes(int n)//增加n分鐘 { minute+=n; if(minute>=60) { add_hours(minute/60); minute%=60; } } void Time::add_hours(int n)//增加n小時 { hour+=n; if(hour>=24) hour%=24; } void Time::change24() //改變靜態成員is_24,在12和24時制之間轉換 { if(t1==true) { t1=false; } else t1=true; } void Time::changefrom0() //改變靜態成員from0,切換是否前導0 { if(t2==true) { t2=false; } else t2=true; } int main( ) //運行結果如圖所示 { Time T; T.Choose(); T.show_time(); cout<<endl<<"增加1000000秒:"<<endl; T.add_seconds(1000000); T.show_time(); cout<<endl<<"前導切換:"<<endl; T.changefrom0();T.show_time(); cout<<endl<<"時制切換:"<<endl; T.change24();T.show_time(); return 0; }