/*
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 文件名稱:
* 作 者:張傳新
* 完成日期:2012 年04 月 2日
* 版 本 號:1
* 對任務及求解方法的描述部分
* 輸入描述:
* 問題描述:
* 程序輸出:
* 問題分析:……
* 算法設計:……
*/
- #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 pm
- void 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,切換是否前導0
- private:
- static bool is_24; //爲true時,24小時制,如20:23:5;爲flase,12小時制,顯示爲8:23:5 pm
- static bool from0; //爲true時,前導0,爲flase,8:23:5顯示爲08:23:05
- int 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;
- //根據is_24和from0,輸出適合形式-20:23:5/8:23:5 pm/08:23:05 pm
- void Time::show_time( )
- {
- if(is_24 == true) //爲true時,24小時制
- {
- if(from0 == false) //爲flase ,不前導0
- {
- cout << hour << ":" << minute << ":" << sec;
- }
- else
- {
- if(hour < 10)
- {
- cout << "0" << hour << ":";
- }
- else
- {
- cout << hour << ":";
- }
- if(minute < 10)
- {
- cout << "0" << minute << ":";
- }
- else
- {
- cout << minute << ":";
- }
- if(sec < 10)
- {
- cout << "0" << sec;
- }
- else
- {
- cout << sec;
- }
- }
- }
- else//爲flase,12小時制
- {
- int h;
- h = hour;
- if(h > 12)
- {
- h = (h - 12) % 12;
- if(from0 == false)
- {
- cout << h << ":" << minute << ":" << sec << '\t' << "pm" << endl;
- }
- else
- {
- if(h < 10)
- {
- cout << "0" << h << ":";
- }
- else
- {
- cout << h << ":";
- }
- if(minute < 10)
- {
- cout << "0" << minute << ":";
- }
- else
- {
- cout << minute << ":";
- }
- if(sec < 10)
- {
- cout << "0" << sec << '\t' << "pm";
- }
- else
- {
- cout << sec << '\t' << "pm";
- }
- }
- }
- else
- {
- if(from0 == false)
- {
- cout << h << ":" << minute << ":" << sec << '\t' << "am" << endl;
- }
- else
- {
- if(h < 10)
- {
- cout << "0" << h << ":";
- }
- else
- {
- cout << h << ":";
- }
- if(minute < 10)
- {
- cout << "0" << minute << ":";
- }
- else
- {
- cout << minute << ":";
- }
- if(sec < 10)
- {
- cout << "0" << sec << '\t' << "am";
- }
- else
- {
- cout << sec << '\t' << "am";
- }
- }
- }
- }
- cout << endl;
- }
- //改變靜態成員is_24,在12和24時制之間轉換
- void Time::change24()
- {
- is_24 = false;
- }
- //改變靜態成員from0,切換是否前導0
- void Time::changefrom0()
- {
- from0 = true;
- }
- //增加n秒鐘
- void Time::add_seconds(int s)
- {
- sec += s;
- if(sec > 60)
- {
- minute = (sec - 60) % 60; //注意:不能爲 minute = (sec - 60),有漏洞
- sec = 0;
- }
- }
- //增加n分鐘
- void Time::add_minutes(int m)
- {
- minute += m;
- if(minute > 60)
- {
- hour = (minute - 60) % 60;//突然發現以前只將 minute = 0考慮進去了,忘了hour加幾
- minute = 0;
- }
- }
- //增加n小時
- void Time::add_hours(int h)
- {
- hour += h;
- if(hour > 24)
- {
- hour = (hour - 24) % 24;
- }
- }
- int main( )
- {
- Time t1(23,14,25),t2(8,45,6);
- 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();
- system("pause");
- return 0;
- }
運行結果:
經驗積累:
獨立完成還是有點困難,自己做不出來,得看別人的才能明白,能看懂但不會編