ACM(gzhu周赛)J - Problem J

原题目:
J - Problem J
给定一个日期,输出这个日期是该年的第几天。

Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。

Sample Input
1985/1/20
2006/3/12

Sample Output
20
71
题目分析:
这道题要分清闰年的与平年。我以为闰年的年份能被四整除的都是闰年,但是其实不是,这是常识性的错误了。闰年:普通年能整除4且不能整除100的为闰年。世纪年能整除400的是闰年。分清闰年后接下来抽象成数学表达式作为判断条件即可。

AC代码如下:

#include<iostream>
using namespace std;
int main()
{
 int y, m, d,n;
 char s;
 while (cin >> y >> s >> m >> s >> d)
 {
  if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
  {
   if (m == 1)  n= d;
   if (m == 2)  n= 31 + d;
   if (m == 3) n= 60 + d;
   if (m == 4) n= 91 + d;
   if (m == 5) n =121 + d;
   if (m == 6) n= 152 + d;
   if (m == 7)n= 182 + d;
   if (m == 8)n= 213 + d;
   if (m == 9) n= 244 + d;
   if (m == 10) n= 274 + d;
   if (m == 11) n= 305 + d;
   if (m == 12) n= 335 + d;
  }
  else
  {
   if (m == 1)  n = d;
   if (m == 2)  n = 31 + d;
   if (m == 3) n = 59 + d;
   if (m == 4) n = 90 + d;
   if (m == 5) n = 120 + d;
   if (m == 6) n = 151 + d;
   if (m == 7)n = 181 + d;
   if (m == 8)n = 212 + d;
   if (m == 9) n = 243 + d;
   if (m == 10) n = 273 + d;
   if (m == 11) n = 304 + d;
   if (m == 12) n = 334 + d;
  }
  cout << n << endl;
 }
 return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值