有時候人們用四位數字表示一個時間,比如1106表示11點零6分。現在,你的程序要根據起始時間和流逝的時間計算出終止時間。
讀入兩個數字,第一個數字以這樣的四位數字表示當前時間,第二個數字表示分鍾數,計算當前時間經過那么多分鍾后是幾點,結果也表示為四位數字。當小時為個位數時,沒有前導的零,即5點30分表示為530。注意,第二個數字表示的分鍾數可能超過60,也可能是負數。
輸入格式:
輸入在一行中給出2個整數,分別是四位數字表示的起始時間、以及流逝的分鍾數,其間以空格分隔。注意:在起始時間中,當小時為個位數時,沒有前導的零,即5點30分表示為530;流逝的分鍾數可能超過60,也可能是負數。
輸出格式:
輸出四位數字表示的終止時間,當小時為個位數時,沒有前導的零。題目保證起始時間和終止時間在同一天內。
輸入樣例:
1120 110
輸出樣例:
1310
#include <stdio.h> int main() { int t,h,m,a; int b,c; scanf("%d %d",&t,&a); h=t/100; m=t%100; if(a<0){ a *= -1; b=a/60; c=a%60; printf("%d,%d\n",b,c); if(h>b){ h=h-b; if(m>c){ m=m-c; } else{ m=m+60-c; h=h-1; } } else{ h=h+24-b; if(m>c){ m=m-c; } else{ m=m+60-c; h=h-1; } } if(h>9){ printf("%d%02d\n",h,m); } else{ printf("%d%d\n",h,m); } } else{ b=a/60; c=a%60; printf("%d,%d\n",b,c); if(h>1){ h=h+b; if(h>24){ h=h-24; } m=m+c; if(m>60){ h++; m=m-60; } } else{ m=m+c; } if(h>9){ printf("%d%02d\n",h,m); } else{ printf("%d%d\n",h,m); } } return 0; }

總結:代碼看起來有些復雜,但是思路是順着來的。搜了一下發現還有一種方法就是先換算成分鍾,算出來后再得結果,看完發現自己太傻了,思維太局限,換算分鍾的方法就簡單的多了,有時間我再試試。
