時間間隔
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語言比較簡單