计算两个时间的时间间隔
时间间隔
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语言比较简单