时间间隔
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语言比较简单