练手小程序1.求两个时间的和
时间:2014-03-05 17:33:08
收藏:0
阅读:400
题目:求两个时间的和,输入两个时间(时间的格式为hh:mm:ss,保证输入都是正确的时间 ,所以自己不用检查输入的时间正确与否),计算这两个时间的和并输出。
例如:输入 00:00:04 和 00:00:01 最后输出的时间是00:00:05
考察的知识点:字符串的处理
代码如下:
// 求两个时间的和.cpp : 定义控制台应用程序的入口点。 // 求两个时间的和,输入两个时间(时间的格式为hh:mm:ss,保证输入都是正确的时间 // ,所以自己不用检查输入的时间正确与否),计算这两个时间的和并输出,例如输入 // 00:00:04 和 00:00:01 最后输出的时间是00:00:05 #include "stdafx.h" #include <iostream> #include <string> #include <vector> //切割时间字符串 void split_time(const std::string &time, std::vector<std::string> &time_vec) { int nstart = 0; int nend = time.find(‘:‘, nstart); std::string time_str = time.substr(nstart, nend - nstart); time_vec.push_back(time_str); while (-1 != nend) { nstart = nend + 1; nend = time.find(‘:‘, nstart); time_str = (-1 != nend) ? time.substr(nstart, nend - nstart) : time.substr(nstart, time.length() - nstart); time_vec.push_back(time_str); } } //不够两位补0 void add_zero(int ntime, std::string &time_str) { char str_temp[3]; itoa(ntime, str_temp, 10); time_str = str_temp; if (1 == time_str.length()) { time_str = "0" + time_str; } } //获取两个时间的和 void get_time_sum(const std::string &str_a, const std::string &str_b) { std::vector<std::string> split_first_time_vec; std::vector<std::string> split_second_time_vec; split_time(str_a, split_first_time_vec); split_time(str_b, split_second_time_vec); int second = atoi(split_first_time_vec[2].c_str()) + atoi(split_second_time_vec[2].c_str()); int minute = atoi(split_first_time_vec[1].c_str()) + atoi(split_second_time_vec[1].c_str()); int hour = atoi(split_first_time_vec[0].c_str()) + atoi(split_second_time_vec[0].c_str()); std::string sum; std::string second_str; std::string minute_str; std::string hour_str; if (second > 60) { minute += second / 60; second %= 60; } add_zero(second, second_str); if (minute > 60) { hour += minute / 60; minute %= 60; } add_zero(minute, minute_str); if (hour > 24) { hour %= 24; } add_zero(hour, hour_str); sum = hour_str + ":" + minute_str + ":" + second_str; std::cout << "the sum of two times is:" << sum << std::endl; } int _tmain(int argc, _TCHAR* argv[]) { std::string first_time("07:22:55"); std::string second_time("09:44:55"); get_time_sum(first_time, second_time); system("pause"); return 0; }
原文:http://blog.csdn.net/htyurencaotang/article/details/20482545
评论(0)