静态成员应用

  1. /*  
  2. 问题及代码:  
  3. *文件名称: 静态成员应用        
  4. *作者:隋文韬    
  5. 完成日期:2016.4.4     
  6. *问题描述:设计含有静态数据成员和成员函数的time类。    
  7. *输入描述:无   
  8. 程序输出:time的不同表示方法以及加n小时,n分钟,n秒后的时间 
  9. */    
  10. #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,8:23:5显示为08:23:05
        int hour;
        int minute;
        int sec;
    };
    bool Time::is_24=true;
    bool Time::from0=false;//因为第一次显示为23:14:25,所以初始化 is_true为true,from0为false
    Time::Time(int h,int m,int s)
    {
        hour=h;
        minute=m;
        sec=s;
    }
    void Time::show_time()
    {
        int h;
        if(h==is_24)
            h=hour;
        else h=hour%12;
    
        if(h<10&&from0)
            cout<<"0";
        cout<<h<<":";
        if(minute<10&&from0)
            cout<<"0";
        cout<<minute<<":";
        if(sec<10&&from0)
            cout<<"0";
        cout<<sec;//输出时分秒
         if(!is_24)
         {
             if(hour>12)
                cout<<" pm";
             else cout<<" am";
         }
            cout<<endl;
    }
    void Time::add_seconds(int n)
    {
        sec+=n;
        if(sec>60)
       {
            minute+=sec/60;
            sec=sec%60;
       }
    }
    void Time::add_minutes(int m)
    {
        minute+=m;
        if(minute>60)
        {
            hour+=minute/60;
            minute=minute%60;
        }
    }
    void Time::add_hours(int k)
    {
        hour+=k;
        if(hour>24)
        {
            hour=hour%24;
        }
    }
    void Time::change24()
    {
      is_24=!is_24;
    }
    void Time::changefrom0()
    {
         from0=!from0;
    }
    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();
        Time::change24();
        cout<<"换一种制式:"<<endl;
        cout<<"t1是:";
        t1.show_time();
        cout<<"t2是:";
        t2.show_time();
        return 0;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值