实现两个合法时间相加
描述: 给定两个合法的时间(格式固定:hh:mm:ss,时间合法,不用考虑其它情况),输入两个时间相加后的结果;注意,相加后的结果也必需是一个合法的时间;
附合法时间定义:小时在[00-23]之间,分钟和秒分别是在[00-59]之间;
运行时间限制: 无限制
内存限制: 无限制
输入: 时分秒格式的时间字符串,如00:00:00
输出: 时分秒格式的时间字符串,如00:00:00
样例输入: 00:00:00 00:00:01
样例输出: 00:00:01
答案提示: 建议将时间转换为秒数计算
看了不少,我开始找工作了,希望我的找工作之旅能顺顺利利的,积累人气。
void time_show_xu(char *time_xu)
{
int i,m,n,time_sum=0,h_sum,s_sum,m_sum;
char *time1=(char *)malloc(20);
char *time2=(char *)malloc(20);
char *add_time=(char *)malloc(20);
for(i=0;*(time_xu+i)!=' ';i++)
;
strncpy(time1,time_xu,i);
*(time1+i)='\0';
printf("%s\n",time1);
strcpy(time2,time_xu+i+1);
printf("%s\n",time2);
strcpy(add_time,time1);
m=((*(time1)-'0')*10+*(time1+1)-'0')*3600;//将时间部分小时转化成秒
m+=((*(time1+3)-'0')*10+*(time1+4)-'0')*60;//将时间部分分钟转化成秒
m+=(*(time1+6)-'0')*10+*(time1+7)-'0';
n=((*(time2)-'0')*10+*(time2+1)-'0')*3600;//将时间部分小时转化成秒
n+=((*(time2+3)-'0')*10+*(time2+4)-'0')*60;//将时间部分分钟转化成秒
n+=(*(time2+6)-'0')*10+*(time2+7)-'0';
//cout<<m<<" "<<n<<endl;
time_sum=m+n;
m_sum=time_sum%60;//获取时间相加后的秒
if(m_sum>9)
{
*(add_time+6)=m_sum/10+'0';
*(add_time+7)=m_sum%10+'0';
}
else
{
*(add_time+6)=0+'0';
*(add_time+7)=m_sum+'0';
}
s_sum=time_sum/60;//获取分钟数
//cout<<s_sum<<endl<<m_sum<<endl;
if(s_sum<=59) //获取到的分钟数,分大于和小于60
{
h_sum=0;
if(h_sum<10 &&h_sum>=0)
{
*(add_time)=0+'0';
*(add_time+1)=h_sum+'0';
}
}
else //大于59
{
h_sum=s_sum/60;
s_sum=s_sum%60;
if(h_sum>23)
{
h_sum%=24;
if(h_sum>23)
{
h_sum%=24;
if(h_sum<10)
{
*(add_time)=0+'0';
*(add_time+1)=h_sum+'0';
}
}
else if(h_sum>10)
{
*(add_time)=h_sum/10+'0';
*(add_time+1)=h_sum%10+'0';
}
else
{
*(add_time)=0+'0';
*(add_time+1)=h_sum+'0';
}
}
else
if(h_sum>9)
{
*(add_time)=h_sum/10+'0';
*(add_time+1)=h_sum%10+'0';
}
else
{
*(add_time)=0+'0';
*(add_time+1)=h_sum+'0';
}
if(s_sum>9)
{
*(add_time+3)=s_sum/10+'0';
*(add_time+4)=s_sum%10+'0';
}
else
{
*(add_time+3)=0+'0';
*(add_time+4)=s_sum+'0';
}
}
printf("%s\n",add_time);
free(time1);
free(time2);
free(add_time);
}
int main()
{
char *time_xu="23:59:59 23:59:59";
time_show_xu(time_xu);
return 0;
}