![當前編程題:《某時間的前一秒和後一秒時間》](http://p2.ttnews.xyz/loading.gif)
【問題描述】
從鍵盤輸入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;
}
閱讀更多 九雲IT 的文章