/*
* 程序的版权和版本声明部分
* 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;
- }
运行结果:
经验积累:
独立完成还是有点困难,自己做不出来,得看别人的才能明白,能看懂但不会编