问题及代码
ALL rights reserved.
*文件名称: 初学对象3
作者:李长鸿
*完成时间:2015.4.12
*问题描述:数组之工资
*/
#include <iostream>
using namespace std;
class Time
{
public:
Time(int h=0,int m=0,int s=0):hour(h),minute(m),seconds(s) {}
void showtime(); //根据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_hour(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,8:23:5显示为08:23:05
int hour;
int minute;
int seconds;
};
bool Time::is_24=1;
bool Time::from0=1;
//下面写出静态成员的初始化及各成员函数的定义……
void Time::change24()
{
cout<<"切换小时制后: ";
if(is_24)is_24=0;
else is_24=1;
}
void Time::changefrom0()
{
cout<<"切换是否前导0后: ";
if(from0)from0=0;
else from0=1;
}
void Time::showtime()
{
int h=12;
char c='0';
if(is_24)
h=24;
cout<<h<<"小时制,";
if(from0)
cout<<"前导0; ";
else
{
cout<<"不前导0;";
c=' ';
}
cout<<"时间显示为: ";
if(hour%h<10&&from0) cout<<c;
cout<<hour%h<<":"<<minute<<":"<<seconds;
if(h==12)
{
if(hour>=12)cout<<" am";
else cout<<" pm";
}
cout<<endl;
}
void Time::add_seconds(int x)
{
cout<<"增加"<<x<<"秒后,";
minute=((seconds+x)/60+minute)%60;
hour=((seconds+x)/3600+hour)%24;
seconds=(x+seconds)%60;
}
void Time::add_minutes(int x)
{
cout<<"增加"<<x<<"分钟后,";
hour=((minute+x)/60+hour)%24;
minute=(minute+x)%60;
}
void Time::add_hour(int x)
{
cout<<"增加"<<x<<"小时后,";
hour=(hour+x)%24;
}
int main()
{
Time t(9,37,35);
t.showtime();
int k;
cin>>k;
t.add_seconds(k);
t.showtime();
cin>>k;
t.add_minutes(k);
t.showtime();
cin>>k;
t.add_hour(k);
t.showtime();
t.change24();
t.showtime();
t.changefrom0();
t.showtime();
return 0;
}
总结:静态成员的初始化;静态成员函数的定义;