C++程序设计 时间间隔计算练习题,只通过样例1?

究竟是忽略了什么特殊的情况?望有大神帮忙指正

/*

2薪酬(10分)

题3时间间隔(10分)

题目内容:定义一个Time类(时、分、秒),能够实现对时间的输出,再定义一个Interval类能够计算出两个时间之间的间隔。要求两个类里面都必须有构造函数。注意输入输出格式要和样例统一。

输入格式:输入两个时间,用回车作为间隔

输出格式:输出时间间隔

输入样例:

12:59:59

20:15:15

输出样例:

07:15:16

*/

#include

#include

#include

#include

using namespace std;

class Time{

  protected:

    int h;

    int m;

    int s;

  public:

    void print();

    Time(int h,int m,int s):h(h),m(m),s(s){}

    Time(){h=m=s=0;};

  friend class Interval;

  };

void Time::print(){

  while(s>=60){s-=60;m++;}

  while(m>=60){m-=60;h++;}

  while(h>=24){h-=24;}

  cout.fill('0');

  cout<

  }


class Interval{

  private:

    Time a;

    Time b;

    Time period;

  public:

    Interval(Time a,Time b);

    void print();

};

Interval::Interval(Time a,Time b):a(a),b(b){

  if(b.s-a.s>=0)

  {

    period.s=b.s-a.s;

    }

  else

  {

    period.s=b.s-a.s+60;

    b.m--;

    }

  if(b.m-a.m>=0)

  {

    period.m=b.m-a.m;

  }

  else

  {

    period.m=b.m-a.m+60;

    b.h--;

  }

  period.h=b.h-a.h;

    if(period.h<0)period.h=-period.h;

  }

void Interval::print(){

  period.print();

  }

int main()

{ int h,m,s;

  char c;

  cin>>h>>c>>m>>c>>s;

  Time a=Time(h,m,s);

  cin>>h>>c>>m>>c>>s;

  Time b=Time(h,m,s);

  Interval interval=Interval(a,b);

  interval.print();


    return 0;

}

你可能感兴趣的:(C++程序设计 时间间隔计算练习题,只通过样例1?)