输入整数秒 ,按照"000:00:00:00"格式输出时间,,时间最大值999(天),不考虑溢出
代码除去溢出判断之后有问题,即当输入大于int最大值后,变为负值,此时一直输出
将main中while循环改为如下,则会出现连续输出的情况, 属于cin的问题吧? 具体我还不知道
while(1)
{
cin>>second;
if(second > ma)//大于最大值
second = ma;
cout<<getShow(second)<<endl;
}
code:
int day = 24* 60*60;
int hour = 60*60;
int mini = 60;
int getDay(int sec)
{
if(sec>= 0)
return sec/day;
return 0;
}
int getHour(int sec)
{
sec = sec% day;
return sec/hour;
}
int getMinituate(int sec)
{
sec = sec % hour;
return sec / mini;
}
int getSecond(int sec)
{
return sec % 60;
}
string getShow(int second)
{
int d = getDay(second);
int h = getHour(second);
int m = getMinituate(second);
int sec = getSecond(second);
string str = "000:00:00:00";//华为要求的输出格式
char c ;
if(d/100 >= 10)
{
c = '0' + 9 ;
day = day%100;
}
else
c = '0' + d/100 ;
str[0] = c;
str[1] = '0'+(d%100) / 10;
str[2] = '0'+ d%10;
str[4] = '0' + h/10;
str[5] = '0' + h%10;
str[7] = '0' + m/10;
str[8] = '0' + m%10;
str[10] = '0' + sec/10;
str[11] = '0' + sec%10;
return str;
}
int main(void)
{
int ma = 999*day + 23* hour + 59*mini + 59;
int second = 0;
while(1)
{
cin>>second;
if(second > ma)//大于最大值
second = ma;
else if(second < 0)
second = 0;//小于0 华为机试时不考虑
cout<<getShow(second)<<endl;
}
return 0;
}