HDU - 2005-第几天?

给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71

我的见解:第一步跟之前我发的博客排序有点像,那题是从5隔开,这个是从/隔开,然后获得年月日所对应的数字,通过调用函数,判断为闰年还是平年,再将一个一个月计算出来加是日就好了

代码如下:

#include <iostream>
using namespace std;



	int days(int d, int m, int y)
	{
		int days; int z;
		if ((y % 4 == 0 && y % 100 != 0)||(y % 400 == 0))
		{

			if (m == 1)z = 0;
			if (m == 2)z = 31;
			if (m == 3)z = 60;
			if (m == 4)z= 91;
			if (m == 5)z = 121;
			if (m == 6)z = 152;
			if (m == 7)z = 182;
			if (m == 8)z = 213;
			if (m == 9)z= 244;
			if (m == 10)z = 274;
			if (m == 11)z = 305;
			if (m == 12)z = 335;
			days = z + d;
		}
		else
		{
			if (m == 1) z= 0;
			if (m == 2)z = 31;
			if (m == 3)z = 60 - 1;
			if (m == 4)z = 91 - 1;
			if (m == 5)z = 121 - 1;
			if (m == 6)z = 152 - 1;
			if (m == 7)z = 182 - 1;
			if (m == 8)z = 213 - 1;
			if (m == 9) z= 244 - 1;
			if (m == 10)z = 274 - 1;
			if (m == 11)z = 305 - 1;
			if (m == 12)z = 335 - 1;
			days = z + d;
		}
		return days;
	}
	int main()
	{
		char a[10];
		while (cin >> a)
		{
			int b[3] = { 0 }, c = 0, i, t, g, f = 0;
			for (i = t = 0; a[i] != '\0'; i++)
			{


				if (a[i] == '/')

				{
					g = 1;
					for (t = i - 1; t >= f; t--)
					{
						b[c] += (a[t] - 48)*g;
						g *= 10;
					}
					f = i + 1;
					c++;

				}
			}
			for (g = 1, t = i - 1; t >= f; t--)
			{
				b[c] += (a[t] - 48) * g;
				g *= 10;
			}
			int q = days(b[2], b[1], b[0]);
			cout << q << endl;
			
				
		
		}

		
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wujiekd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值