當前編程題:《某時間的前一秒和後一秒時間》

當前編程題:《某時間的前一秒和後一秒時間》

【問題描述】

從鍵盤輸入24小時制的某個時間,計算並輸出其前一秒和後一秒的時間。

【輸入形式】

從鍵盤輸入24小時制的某個時間,格式為:hh:mm:ss。

【輸出形式】

輸出2行,第1行為輸入時間的前1秒時間,第2行為輸入時間的後1秒時間,格式為:hh:mm:ss。

【樣例輸入1】

09:59:59

【樣例輸出1】

09:59:58

10:00:00

【樣例輸入2】

00:00:00

【樣例輸出2】

23:59:59

00:00:01

解題思路與易錯分析:

這道題的難點就在於就輸入的時間的分割,以及就數據的處理問題,當然方法有很多,這裡只講我的思路,

我會用一個string來儲存一行的數據(當然你這裡也可以用char數組來儲存,這樣也可以省略了後面的將string轉化為int),然後在分割字符串,最後在將分割的字符串轉化為數字(int)在進行過處理。

我覺得這樣挺麻煩的,如果你有好的方法可以分享一下,剩下的就是if-else語句來判斷情況並分類討論,最後是就是有關格式輸出的問題可以採用iomanip中的setw()於setfill()函數同時這要注意於setprecision()的區別,setfill()是隻對後面緊跟的輸出才有作用,而setprecision()則是黏性的對後面的全部都有作用。

代碼:

#include

#include

#include

#include

using namespace std;

int main()

{

int h,m,s;

string in,hh,mm,ss;

getline(cin,in);

hh = in.substr(0,2);

mm = in.substr(3,2);

ss = in.substr(6,2);

h = atoi(hh.c_str());

m = atoi(mm.c_str());

s = atoi(ss.c_str());

if(s-1<0)

{

if(m-1<0)

{

if(h-1<0)

{

cout << 23 << ":" << 59<

}

else

{

cout << setw(2)<

}

}

else

{

cout << setw(2)<

}

}

else

{

cout << setw(2)<

}

if(s+1>=60)

{

if(m+1>=60)

{

if(h+1>23)

{

cout << "00" << ":" << "00"<

}

else

{

cout << setw(2)<

}

}

else

{

cout << setw(2)<

}

}

else

{

cout << setw(2)<

}

return 0;

}


分享到:


相關文章: