C++很简单的一段代码 菜鸟有一段不是很理解 关于时间的 求高手解答 谢谢!!!!!!!! 在线等 急!!!!!!!!!!!!!!
这是源代码
#include <iostream.h>
#include <stdlib.h>
class Time
{ int hh , mm , ss ; //默认为private属性
public:
Time( );
Time( int hour , int minute , int second );
Time( int second );
Time( char * str );
void print( ) { cout<<hh<<":"<<mm<<":"<<ss<<"\n"; }
};
Time::Time ( ) { hh=0 ; mm=0 ; ss=0; }
Time::Time ( int hour , int minute , int second )
{ if (hour<0 || minute<0 || second<0)
{ hh=0;mm=0;ss=0;
cout<<"非法的初值!时间不能为负"<<endl; }
else
{ if ( second>59 )
{ minute = minute+second/60; second = second%60; }
if ( minute>59 )
{ hour = hour + minute/60; minute = minute % 60; }
if ( hour > 23 ) hour = hour % 24;
hh = hour ; mm = minute ; ss = second ;
}
}
Time::Time ( int second )
{ hh = 0; mm = 0;
if ( second<0 )
{ ss = 0;
cout<<" 非法的初值!时间不能为负"<<endl; }
else
{ if ( second>59 ) { mm = second / 60 ; ss = second % 60 ; }
if ( mm>59 ) { hh = mm/60; mm = mm % 60; }
if ( hh > 23 ) hh = hh % 24;
}
}
Time::Time ( char * string )
{ char * str = new char [ 3 ] ;
str[0] = string[0];
str[1] = string[1];
str[2] = '\0';
hh = atoi(str);
str[0] = string[3];
str[1] = string[4];
str[2] = '\0';
mm = atoi(str);
str[0] = string[6];
str[1] = string[7];
str[2] = '\0';
ss = atoi(str);
delete str ;
}
void main( )
{ Time t1 , t2 ( 100 , 100 , 100 ) , t3 ( 3690 ) , t4 ( "18:56:34" ) ;
cout<<"t1:" ;
t1.print( );
cout<<"t2:" ;
t2.print( ) ;
cout<<"t3:" ;
t3.print( );
cout<<"t4:" ;
t4.print( ) ;
}
这是一个时间类的代码 关于求时 分 秒 我有点不懂 不知道为什么要除以60 如果我定义为100 分= 100/59=1.69....
秒又等于自身/59;让我很不理解 但是事实证明这代码是正确的 最后也运行成功了 还有就是 最后的字符串 明明是字符串却定义数组 如果 18:56:34 我数组该怎么区分下标呢 主要是这三段代码不理解
Time::Time ( int hour , int minute , int second )
{ if (hour<0 || minute<0 || second<0)
{ hh=0;mm=0;ss=0;
cout<<"非法的初值!时间不能为负"<<endl; }
else
{ if ( second>59 )
{ minute = minute+second/60; second = second%60; }
if ( minute>59 )
{ hour = hour + minute/60; minute = minute % 60; }
if ( hour > 23 ) hour = hour % 24;
hh = hour ; mm = minute ; ss = second ;
}
}
Time::Time ( int second )
{ hh = 0; mm = 0;
if ( second<0 )
{ ss = 0;
cout<<" 非法的初值!时间不能为负"<<endl; }
else
{ if ( second>59 ) { mm = second / 60 ; ss = second % 60 ; }
if ( mm>59 ) { hh = mm/60; mm = mm % 60; }
if ( hh > 23 ) hh = hh % 24;
}
}
[解决办法]
首先需要明白100/59等于几?100%59又等于几?
再次需要明白char*和char[]的区别?
[解决办法]
minute = minute+second/60 这是求分钟 second为61的时候 61/60结果为1 分钟就+1;
second = second%60;取于 除去60秒后的剩下的秒数;
剩下的自己理解
------解决方案--------------------
100/59不是=1.69,那时分秒是int型的,100/59=1,就是进位啊,过了59分后时针就要进位,分和秒也一样