第七周—1.静态成员应用

来源:互联网 发布:装饰效果图软件 编辑:程序博客网 时间:2024/05/16 14:11
// 时间类.cpp : 定义控制台应用程序的入口点。///** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: fun.cpp* 作 者:谷志恒* 完成日期:2013 年4月15'/日* 版本号: v1.0* 对任务及求解方法的描述部分:略* 输入描述:略* 问题描述:略* 程序输出:如下*/#include "stdafx.h"#include <iostream>#include <string>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,切换是否前导0private:    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;};//下面写出静态成员的初始化及各成员函数的定义……Time::Time(int h,int m,int s)//构造函数的定义{    hour=h;    minute=m;    sec=s;}void Time::show_time()//根据is_24 和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm{int h;if(is_24)h=hour;       else            h=hour%12; //三元运算int h=(is_24)?hour: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(!is_24)  cout<<(hour>12)? " pm":" am";  {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;        }    }inline void Time::add_hours(int n)//增加n 小时{   hour+=n;        if (hour>23)            hour%=24;    }void Time::change24() //改变静态成员is_24,在12 和24 时制之间转换{    is_24=!is_24;}void Time::changefrom0() //改变静态成员from0,切换是否前导0{from0=!from0;}bool Time::is_24=true;//为true 时,24 小时制,如20:23:5;为flase,12 小时制,显示为8:23:5 pmbool Time::from0=false;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小时后,前导0:"<<endl;cout<<" t1是:";t1.show_time();cout<<" t2是:";t2.show_time();t1.add_minutes(5);t2.add_minutes(5);Time::changefrom0();cout<<"5分钟后,不前导0:"<<endl;cout<<" t1是:";t1.show_time();cout<<" t2是:";t2.show_time();t1.add_seconds(30);t2.add_seconds(30);Time::changefrom0();cout<<"30秒后,前导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();return 0;}


运行程序:

心得体会:在切换是否前导0的地方犯晕了~~前导0每次都是交替切换,开始不前导0,调用Time::changefrom0();然后前导0,再次调用就变为不前导0,下一次又变为前导0,会出现错误主要还是“改变静态成员from0,切换是否前导0”没有弄明白!!

原创粉丝点击