一、问题及代码
/*
* 文件名称: 静态成员应用
* 作 者: 曾林
* 完成日期: 2016 年 4 月 12 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:略
* 输入描述: 无
* 问题描述: 静态数据成员。
* 程序输出: 略
* 问题分析: 无
* 算法设计: 无
*/
#include <iostream>
using namespace std;
class Time
{
public:
Time(int=0,int=0,int=0);
void show_time( );
void add_seconds(int);
void add_minutes(int);
void add_hours(int);
static void change24();
static void changefrom0();
private:
static bool is_24;
static bool from0;
int hour;
int minute;
int sec;
};
bool Time::is_24=true;
bool Time::from0=false;
Time::Time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void Time::change24()
{
is_24=!is_24;
}
void Time::changefrom0()
{
from0=!from0;
}
void Time::add_seconds(int s)
{
sec=sec+s;
if(sec>=60)
{
minute=minute+sec%60;
sec=sec%60;
if(minute>=60)
{
hour=hour+minute%60;
minute=minute%60;
if(hour>=24)
{
hour=hour%24;
}
}
}
}
void Time::add_minutes (int m)
{
minute=minute+m;
if(minute>=60)
{
hour=hour+minute%60;
minute=minute%60;
if(hour>=24)
{
hour=hour%24;
}
}
}
void Time::add_hours(int h)
{
hour=hour+h;
if(hour>=24)
{
hour=hour%24;
}
}
void Time::show_time()
{
if(is_24==1&&from0==0)
{
cout<<"24时制,不前导:"<<endl;
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
else if(is_24==0&&from0==0)
{
cout<<"12时制,不前导:"<<endl;
if(hour<12)
cout<<hour<<":"<<minute<<":"<<sec<<"am"<<endl;
else
cout<<hour<<":"<<minute<<":"<<sec<<"pm"<<endl;
}
else if(is_24==0&&from0==1)
{
cout<<"12小时制,前导:"<<endl;
if(hour>12)
{
hour=hour-12;
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;
cout<<"pm"<<endl;
}
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;
cout<<"am"<<endl;
}
}
else if(is_24==1&&from0==1)
cout<<"24时制,前导:"<<endl;
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;
}
int main( )
{
Time t1(23,14,25);
Time t2(8,45,6);
cout<<"24小时制,不前导:"<<endl;
t1.changefrom0();
t1.show_time();
t2.show_time();
cout<<"十小时后切换是否前导:"<<endl;
t1.changefrom0();
t1.add_hours(10);
t2.add_hours(10);
t1.show_time();
t2.show_time();
cout<<"换一种制式:"<<endl;
t1.change24();
t1.show_time();
cout<<endl;
t2.show_time();
return 0;
}
二、运行结果
三、心得体会
本次上机作业让我体会到静态数据成员的作用,慢慢知道如何运用
bool类型的作用及用法
四、知识点总结
静态数据成员及静态数据成员函数的应用
静态数据成员影响全局的设置