2012-10-24 33 views
0

我正在寫一個C程序,以24小時格式表示一天中的某個時間的值,以及類似格式的正面或負面的持續時間。該程序應計算持續時間後的24小時時間(即開始+持續時間=結束)。例如,1345和345會輸出1730.正確處理24小時時間

但是,我不知道如何處理不正確的輸入。例如,不應接受像2372或2520這樣的值。同樣,如果我有(例如)100和-200,我應該得到2300作爲輸出,而不是-100。總之,我知道前兩個數字應該是mod 24,最後兩個數字應該是mod 60,但我不知道如何將這些操作應用到輸入。任何人都可以提供關於如何做到這一點的任何提示?

回答

1

讀輸入作爲int,分鐘從分離小時,並檢查它們兩者:

int tm, h, m, is_negative = 0; 
scanf("%d", &tm); 

if (tm < 0) { 
    is_negative = 1; 
    tm = -tm; 
} 

m = tm % 100; // separates the two last digits 
h = tm/100; // excludes the two last digits 

if (m > 59) { 
    handle_error(); 
} 

if (h > 23) { 
    handle_error(); 
}