hdu_problem_2005_第几天?

/*
*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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值