计算两个时间的时间间隔

 

时间间隔

Description

从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。
如:3点5分25秒应表示为--03:05:25.假设两个时间在同一天内,时间先后顺序与输入无关。

Input

输入包括两行。
第一行为时间点1。
第二行为时间点2。

Output

以“小时:分钟:秒”的格式输出时间间隔。
格式参看输入输出。

Sample

Input 

12:01:12
13:09:43

Output 

01:08:31



第一种方法:
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int h1,h2,m1,m2,s1,s2;
 5     scanf("%d:%d:%d",&h1,&m1,&s1);
 6     scanf("%d:%d:%d",&h2,&m2,&s2);
 7     int h=0,m=0,s=0;
 8     if(h1-h2>0)
 9     {
10         h=h1-h2;
11         m=m1-m2;
12         if(m<0)
13         {
14             h=h-1;
15             m=m2-m1;
16         }
17         s=s1-s2;
18         if(s<0)
19         {
20             m=m-1;
21             s=s2-s1;
22         }
23     }
24     else
25     {
26         h=h2-h1;
27         m=m2-m1;
28         if(m<0)
29         {
30             h=h-1;
31             m=m1-m2;
32         }
33         s=s2-s1;
34         if(s<0)
35         {
36             m=m-1;
37             s=s1-s2;
38         }
39     }
40     printf("%02d:%02d:%02d",h,m,s);
41     return 0;
42  }

第二种方法:

 1 #include<stdio.h>
 2 typedef struct Time{
 3     int h,m,s;
 4 }Time;
 5 
 6 void readtime(Time *time)
 7 {
 8     scanf("%d:%d:%d",&time->h,&time->m,&time->s);
 9 }
10 
11 void printftime(Time *time)
12 {
13     printf("%02d:%02d:%02d",time->h,time->m,time->s);
14 }
15 
16 void subtime(Time *time1,Time *time2,Time *time)
17 {
18     long t1,t2,t;
19     t1=time1->h*3600+time1->m*60+time1->s;
20     t2=time2->h*3600+time2->m*60+time2->s;
21     t=t1-t2;
22     if(t<0)
23     {
24         t=t2-t1;
25         time->h=t/3600;
26         time->m=(t-time->h*3600)/60;
27         time->s=t%60;
28     }
29 }
30 int main()
31 {
32     Time t1,t2,t;
33     readtime(&t1);
34     readtime(&t2);
35     subtime(&t1,&t2,&t);
36     printftime(&t);
37     return 0;
38 }

注意:C语言中输入字符比较容易,所以这个题用C语言做比较简单,还有最后输出结果时如果数字小于10,需要补一个0在前面,也是直接用C语言比较简单

原文地址:https://www.cnblogs.com/canneddream/p/14155241.html