第八周项目二

来源:互联网 发布:c语言 sleep 头文件 编辑:程序博客网 时间:2024/04/30 04:10
/     * 程序的版权和版本声明部分     * Copyright (c)2012, 烟台大学计算机学院学生     * All rightsreserved.     * 文件名称: Complex.cpp     * 作 者:王立强    * 完成日期:2013 年4月23日     * 版本号: v1.0     * 对任务及求解方法的描述部分:略     * 输入描述:略     * 问题描述:略     * 程序输出:如下     */      
#include <iostream>using namespace std;class CTime{private:unsigned short int hour;    // 时unsigned short int minute;  // 分unsigned short int second;  // 秒public:CTime(int h=0,int m=0,int s=0);void setTime(int h,int m,int s);void display();//比较运算符(二目)的重载bool operator > (CTime &t);bool operator < (CTime &t);bool operator >= (CTime &t);bool operator <= (CTime &t);bool operator == (CTime &t);bool operator != (CTime &t);//二目运算符的重载CTime operator+(CTime &c);//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15CTime operator-(CTime &c);//对照+理解CTime operator+(int s);//返回s秒后的时间CTime operator-(int s);//返回s秒前的时间//一目运算符的重载CTime operator++(int);//后置++,下一秒CTime operator++();//前置++,下一秒CTime operator--(int);//后置--,前一秒CTime operator--();//前置--,前一秒//赋值运算符的重载   CTime operator+=(CTime &c);CTime operator-=(CTime &c);CTime operator+=(int s);//返回s秒后的时间CTime operator-=(int s);//返回s秒前的时间};//构造函数CTime::CTime(int h,int m,int s){hour=h;minute=m;second=s;}// 设置时间void CTime::setTime(int h,int m,int s){hour=h;minute=m;second=s;}//显示时间void CTime::display(){cout<<hour<<':'<<minute<<':'<<second<<endl;}//比较运算符的重载bool CTime::operator > (CTime &t) // 判断时间t1>t2{if (hour>t.hour) return true;if (hour<t.hour) return false;if (minute>t.minute) return true;if (minute<t.minute) return false;if (second>t.second) return true;return false;}bool CTime::operator < (CTime &t)// 判断时间t1<t2{if (hour<t.hour) return true;if (hour>t.hour) return false;if (minute<t.minute) return true;if (minute>t.minute) return false;if (second<t.second) return true;return false;}bool CTime::operator == (CTime &t)// 判断时间t1==t2{if (*this<t || *this>t) return false;return true;}bool CTime::operator != (CTime &t) // 判断时间t1!=t2{if (*this==t) return false;return true;}bool CTime::operator >= (CTime &t)// 判断时间t1>=t2{if (*this<t) return false;return true;}bool CTime::operator <= (CTime &t) // 判断时间t1<=t2{if (*this>t) return false;return true;}//二目运算符的重载// 计算时间之和, 返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15CTime CTime::operator + (CTime &t){int h,m,s;s=second+t.second;m=minute+t.minute;h=hour+t.hour;if (s>59){s-=60;m++;}if (m>59){m-=60;h++;}if (h>23) h-=24;CTime t0(h,m,s);return t0;}//返回s秒后的时间CTime CTime::operator+(int s){int ss=s%60;int mm=(s/60)%60;int hh=s/3600;CTime t0(hh,mm,ss);return *this+t0;}// 计算时间之差CTime CTime::operator - (CTime &t){int h,m,s;s=second-t.second;m=minute-t.minute;h=hour-t.hour;if (s<0){s+=60;m--;}if (m<0){m+=60;h--;}if (h<0) h+=24;CTime t0(h,m,s);return t0;}//返回s秒前的时间CTime CTime::operator-(int s){int ss=s%60;int mm=(s/60)%60;int hh=s/3600;CTime t0(hh,mm,ss);return *this-t0;}//一目运算符的重载CTime CTime::operator++(int)//后置++,下一秒{CTime t=*this;*this=*this+1;return t;}CTime CTime::operator++()//前置++,下一秒{*this=*this+1;return *this;}CTime CTime::operator--(int)//后置--,前一秒{CTime t=*this;*this=*this-1;return t;}CTime CTime::operator--()//前置--,前一秒{*this=*this-1;return *this;}//赋值运算符的重载   CTime CTime::operator+=(CTime &c){*this=*this+c;return *this;}CTime CTime::operator-=(CTime &c){*this=*this-c;return *this;}CTime CTime::operator+=(int s)//返回s秒后的时间{*this=*this+s;return *this;}CTime CTime::operator-=(int s)//返回s秒前的时间{*this=*this-s;return *this;}int main(){CTime t1(8,20,25),t2(11,20,50),t;cout<<"t1为:";t1.display();cout<<"t2为:";t2.display();cout<<"下面比较两个时间大小:\n";if (t1>t2) cout<<"t1>t2"<<endl;if (t1<t2) cout<<"t1<t2"<<endl;if (t1==t2) cout<<"t1=t2"<<endl; if (t1!=t2) cout<<"t1≠t2"<<endl;if (t1>=t2) cout<<"t1≥t2"<<endl;if (t1<=t2) cout<<"t1≤t2"<<endl;cout<<endl;//在测试下面的代码时,采用单步执行的方法跟踪t=t1++;t=++t1;t1--;--t1;t=t1+t2;t=t1-t2;t=t1+2000;t=t1-5000;t1+=t2;t1-=t2;t1+=2000;t1-=5000;return 0;}

原创粉丝点击