/*
*Problem Description
*给定一个日期,输出这个日期是该年的第几天。
*
*Input
*输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
*
*Output
*对于每组输入数据,输出一行,表示该日期是该年的第几天。
*
*Sample Input
*1985/1/20
*2006/3/12
*
*Sample Output
*20
*71
*
*
*Author
*lcy
*
*
*Source
*C语言程序设计练习(一)
*
*
*Recommend
*JGShining
*
*/
#include<iostream>
#include<string>
#include<vector>
using namespace std;
bool is_leap_year(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return true;
return false;
}
int func_num_of_day(string s) {
int num[3] = { 0,0,0 }, temp = 0, num_of_day = 0; // num[0] —> year , num[1] —> month , num[0] —> day
for (int i = 0; i < s.size(); i++) {
if (s.at(i) == '/') {
temp++;
continue;
}
num[temp] = num[temp] * 10 + (s.at(i) - '0');
}
num_of_day += num[2];
switch (num[1] - 1) {
case 11:num_of_day += 30;
case 10:num_of_day += 31;
case 9:num_of_day += 30;
case 8:num_of_day += 31;
case 7:num_of_day += 31;
case 6:num_of_day += 30;
case 5:num_of_day += 31;
case 4:num_of_day += 30;
case 3:num_of_day += 31;
case 2:num_of_day += 28 + is_leap_year(num[0]);
case 1:num_of_day += 31;
default:break;
}
return num_of_day;
}
int main() {
string s;
vector<int> num_of_day;
while (cin >> s) {
num_of_day.push_back(func_num_of_day(s));
}
for (int i = 0; i < num_of_day.size(); i++) {
cout << num_of_day.at(i) << endl;
}
system("pause");
return 0;
}
hdu_problem_2005_第几天?
最新推荐文章于 2019-10-11 01:12:22 发布