计算两个时间的时间间隔


 

时间间隔

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM