C++第三次上机实验作业

来源:互联网 发布:微波电路s参数矩阵 编辑:程序博客网 时间:2024/05/21 09:38

一、问题及代码

/*文件名称:4.111.cpp* 作    者:  邹鸿运* 完成日期: 2016年 4月 8日* 版 本 号:CodeBlocks* 对任务及求解方法的描述部分:* 设计含有静态数据成员和成员函数的Time类。* 输入描述:  无* 问题描述:  项目1-静态成员应用* 程序输出:  使用类和对象,静态成员以及函数的调用。* 问题分析:  考虑12小时制和24小时制,以及是否前导0和选择输出输出am,pm。* 算法设计:  使用类和对象,静态成员以及函数的调用。*/#include<iostream>using namespace std;class Time{public:    Time(int h,int m,int s);    void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm    void add_seconds(int n); //增加n秒钟    void add_minutes(int n); //增加n分钟    void add_hours(int n); //增加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=1;bool Time::from0=0;                                 //下面写出静态成员的初始化及各成员函数的定义……Time::Time(int h,int m,int s){sec=s;minute=m;hour=h;}void Time::show_time(){    int a=0;if((!from0)&&is_24)    {        cout<<hour<<":"<<minute<<":"<<sec<<endl;    }else if(is_24&&from0){    if(hour<10)        {            cout<<"0";        }        cout<<hour<<":";        if(minute<10)        {            cout<<"0";        }        cout<<minute<<":";        if(sec<10)        {            cout<<"0";        }        cout<<sec<<endl;}else if(from0&&!is_24){        if(hour>=12)        {            hour%=12;            a+=1;        }        if(hour<10)        {            cout<<"0";        }            cout<<hour<<":";        if(minute<10)        {            cout<<"0";        }            cout<<minute<<":";        if(sec<10)        {            cout<<"0";        }        cout<<sec;        if(a)        {            cout<<"     pm";        }        else            cout<<"     am";    }    else if((!from0)&&(!is_24))            {                if(hour>=12)                {                    hour%=12;                    a+=1;                }        cout<<hour<<":"<<minute<<":"<<sec;            if(a)        {            cout<<"     pm";        }        else            cout<<"     am";            }    cout<<endl;}void Time::add_seconds(int n){cout<<"增加n秒:";cin>>n;sec+=n;if(sec>=60){minute+=(sec/60);sec%=60;if(minute>=60){hour+=(minute/60);minute%=60;}if(hour>=24){hour%=24;}}}void Time::add_minutes(int n){cout<<"增加n分钟:";cin>>n;cout<<endl;minute+=n;if(minute>=60){hour+=(minute/60);minute%=60;}if(hour>=24){hour%=24;}}void Time::add_hours(int n){hour+=n;if(hour>=24){hour%=24;}}void Time::change24(){is_24=!(is_24);}void Time::changefrom0(){from0=!(from0);}int main( ){cout<<"24时制,不前导:"<<endl;Time t1(23,14,25);Time t2(8,45,6);cout<<"t1是:";    t1.show_time();    cout<<"t2是:";    t2.show_time();    cout<<"10小时后,切换是否前导:"<<endl;    t1.add_hours(10);    t2.add_hours(10);    cout<<"t1是:";    t1.changefrom0();    t1.show_time();    cout<<"t2是:";    t2.show_time();    cout<<"换一种制式:"<<endl;    t1.change24();    cout<<"t1是:";    t1.show_time();    cout<<"t2是:";    t2.show_time();return 0;}


二、运行结果



三、心得体会

对类和对象的使用还是不熟练,在使用是否前导0时,可以使用选择结构,选择是否输出0,后面可以直接输出时间,在调用change24和changefrom0时,在主函数中要根据所要输出的内容,注意不要重复调用,不然结果和没调用一样。


四、知识点总结

静态成员函数共用,有些地方只要调用一次,不要重复调用,注意秒进分,分进时的处理,及24时制和12小时制的转换。



0 0
原创粉丝点击