1. 程式人生 > >C++筆試題 時間轉換

C++筆試題 時間轉換

時間轉換

描述

給定一個12小時制的時間,請將其轉換成24小時制的時間。說明:12小時制的午夜12:00:00AM,對應的24小時制時間為00:00:00。12小時制的中午12:00:00PM,對應的24小時制時間為12:00:00。

輸入描述

一個描述12小時制時間的字串。所有的輸入都是合理的,不用考慮輸入不合理的情況。

輸出描述

一個描述24小時制時間的字串。

樣例輸入 1

08:03:45PM

樣例輸出 1

20:03:45

樣例輸入 2

08:03:45AM

樣例輸出 2

08:03:45

#include <iostream>
#include <string>
using namespace std; // convert time to 24-hour system class CambrianTimeConvert { public: string time24hourSystemConvert(const string& t); }; string CambrianTimeConvert::time24hourSystemConvert(const string& t) { string newt; if (t.find("pm") != string::npos || t.
find("PM") != string::npos) { newt.assign(t.begin(), t.end() - 2); int hour_digit1 = newt[0] - '0' + 1; int hour_digit2 = newt[1] - '0' + 2; if (hour_digit2 >= 10) { hour_digit1 += 1; hour_digit2 %= 10; } if (2 == hour_digit1 &&
4 == hour_digit2) { hour_digit1 = 1; hour_digit2 = 2; } newt[0] = hour_digit1 + '0'; newt[1] = hour_digit2 + '0'; } else if (t.find("am") != string::npos || t.find("AM") != string::npos) { newt.assign(t.begin(), t.end() - 2); int hour_digit1 = newt[0] - '0'; int hour_digit2 = newt[1] - '0'; if (1 == hour_digit1 && 2 == hour_digit2) { hour_digit1 = 0; hour_digit2 = 0; } newt[0] = hour_digit1 + '0'; newt[1] = hour_digit2 + '0'; } return newt; } int main() { string t; getline(cin, t); CambrianTimeConvert ctc; cout << ctc.time24hourSystemConvert(t) << endl; return 0; }