华为最近推出一项活动,名为开发者英雄大会,参与该活动需要在华为云服务DevCloud中创建项目,提交代码,并在论坛上回复帖子,然后等待算法评估及奖励发放。
为了训练一下编程技巧,空闲时间做了一下题目,首先题目描述如下
输入一个日期,格式为xxxx-xx-xx(年-月-日),计算其距离 2016-12-22 的天数。
//2016-12-22是DevCloud的生日哦~
示例1
Input:2018-12-22
Output:730
示例2
Input:2020-12-22
Output:1461
采用C++技术栈,代码如下
#include <iostream>
#include <vector>
#include <ctime>
#include <sstream>
#include <cstdlib>
#include <iterator>
using namespace std;
int main() {
tm birth = {0};
tm input = {0};
birth.tm_year = 2016;
birth.tm_mon = 12;
birth.tm_mday = 22;
string line;
while(getline(cin, line)) {
if(line == "")
break;
//cout << line << endl;
istringstream iss(line);
string token;
vector<string> input_s;
while(getline(iss, token, '-')) {
input_s.push_back(token);
}
if(input_s.size() != 3) {
cout << "your input format is not correct\nexample 2018-12-22\n" << endl;
continue;
}
input.tm_year = stoi(input_s[0]);
input.tm_mon = stoi(input_s[1]);
input.tm_mday = stoi(input_s[2]);
double diff = difftime(mktime(&input), mktime(&birth));
cout << int(diff/60/60/24) << endl;
}
return 0;
}
使用g++编译代码
g++ work-1.cpp
运行a.out文件,输入为空时退出程序。
(本文完)
网友评论