
(用TC编写)题目: 输入如下所示的表示两个时刻的数据,输出两个时刻的时间差。
(第2个时刻的时大于第1个时刻的)
输入:
12:30:5 说明:表示第1个时刻12:30:05
14:40:1 输入时间时可以有空格,如12: 30 : 5
输出:
2:9:56 说明: 表示时间差为2小时9分56秒
(注:追加悬赏!) 展开
/*可以处理空格!!!*/
#include<stdio.h>
#include<string.h>
struct TTime
{
int h,m,s;
long GetSec(){return 3600L*h+60*m+s;}
void StrToTime(char _str[])
{
int i,j,len=strlen(_str);
/*去空格*/
for(i=0;i<len;++i)
if(_str[i]==' ')
{
for(j=i;j<len-1;++j)
_str[j]=_str[j+1];
--len;
i=-1;
continue;
}
/*读小时*/
j=0;
for(i=0;i<len;++i)
if(_str[i]==':')
break;
else
j=j*10 + _str[i]-'0';
h = j;
/*读分钟*/
j=0;
for(++i;i<len;++i)
if(_str[i]==':')
break;
else
j=j*10 + _str[i]-'0';
m = j;
/*读秒*/
j=0;
for(++i;i<len;++i)
j=j*10 + _str[i]-'0';
s = j;
}
void ToPlan(long t)
{
int hh,mm,ss;
hh = t/3600;
t%=3600;
mm = t/60;
t%=60;
ss=t;
printf("%2.2d:%2.2d:%2.2d\n",hh,mm,ss);
}
}Ta,Tb,Tc;
void main()
{
char a[105],b[105];
gets(a);
gets(b);
Ta.StrToTime(a);
Tb.StrToTime(b);
printf("sec: %ld, time: ",Tb.GetSec()-Ta.GetSec());
Tc.ToPlan(Tb.GetSec()-Ta.GetSec());
}

2022-05-15 广告
int main()
{
int h1,m1,s1;
int h2,m2,s2;
int h,m,s;
scanf("%d:%d:%d",&h1,&m1,&s1);
scanf("%d:%d:%d",&h2,&m2,&s2);
if(s2>=s1)
{
s=s2-s1;
}
else
{
s=s2+60-s1;
m2-=1;
}
if(m2>=m1)
{
m=m2-m1;
}
else
{
m=m2+60-m1;
h2-=1;
}
h=h2-h1;
printf("%d:%d:%d\n",h,m,s);
}
如上tc可以运行
运行效果:
12:30:5
14:40:1
2:9:56
没有截图,不过效果就是上面的。