• C++走向远洋——33(静态成员的应用)


    */
     * Copyright (c) 2016,烟台大学计算机与控制工程学院
     * All rights reserved.
     * 文件名:time.cpp
     * 作者:常轩
     * 微信公众号:Worldhello
     * 完成日期:2016年3月23日
     * 版本号:V1.0
     * 问题描述:静态成员应用
     * 程序输入:无
     * 程序输出:见运行结果
     */
    
    #include <iostream>  
    using namespace std;  
    class Time  
    {  
    public:  
        Time(int=0,int=0,int=0);  
        void show_time( ); //根据is_24和from0,输出适合形式的时间: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,在和时制之间转换  
        static void changefrom0();   //改变静态成员from0,转换是否前导  
    private:  
        static bool is_24; //为true时,小时制,如:23:5;为flase,小时制,显示为:23:5 pm  
        static bool from0; //为true时,前导,:23:5显示为:23:05  
        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::show_time( )       
    {  
        int h;
        if(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) //增加n秒钟   
    {    
        sec+=n;          
        if (sec>59)       
        {    
            add_minutes(sec/60);      
            sec%=60;          
        }    
    }    
      
    void Time::add_minutes(int n) //增加n分钟   
    {    
        minute+=n;    
        if (minute>59)     
        {    
            add_hours(minute/60);    
            minute%=60;    
        }    
    }    
      
    void Time::add_hours(int n) //增加n小时   
    {    
        hour+=n;    
        if (hour>23)    
            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时制, 不前导:"<<endl;  
        cout<<"    t1是:";  
        t1.show_time();  
        cout<<"    t2是:";  
        t2.show_time();  
        t1.add_hours(10);  
        t2.add_hours(10);  
        Time::changefrom0(); //注意此处调用静态成员  
        cout<<"10小时后, 切换是否前导:"<<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();  
        return 0;  
    }  

    心得:

        无

  • 相关阅读:
    针对 jQuery Gridly 控件显示多少列的问题。
    网上找的几款拖拽插件
    商品价格加价区间的实现(策略模式)
    【C#】GC和析构函数(Finalize 方法)
    C#微信开发之旅(一):前言
    Opserver配置Redis、SqlServer监控
    线程安全的方式引发事件
    使用SSL的IIS下WCF配置(CSDN手动迁移)
    由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法(CSDN手动迁移)
    EF Code First(The model backing the '***' context has changed since the database was created.解决方法)(CSDN手动迁移)
  • 原文地址:https://www.cnblogs.com/chxuan/p/8232247.html
Copyright © 2020-2023  润新知