牛客历年机试真题--日期差值(日期问题)

日期差值

刷题链接: link.

题目描述

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天

输入描述:

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出描述:

每组数据输出一行,即日期差值

示例1:

输入:
20110412
20110422
输出:
11

我的代码:(注意输入可以直接使用long long类型,且方便比较大小)

#include<cstdio>
int judge(int y)
{
	if((y%400==0)||(y%100!=0&y%4==0))
		return 1;
	return 0;
}
int main()
{
	long long a,b;
	int month[13][2]={0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31};
	while(scanf("%lld%lld",&a,&b)!=EOF)
	{
		if(a<b)
		{
			long long temp=a;
			a=b;
			b=temp;
		}
		int y1=a/10000,m1=a%10000/100,d1=a%100;
		int y2=b/10000,m2=b%10000/100,d2=b%100;
		int count=1;
		while(y1!=y2||m1!=m2||d1!=d2)
		{
			d2++;
			if(d2>month[m2][judge(y2)])
			{
				d2=1;
				m2++;
			}
			if(m2>12)
			{
				m2=1;
				y2++;
			}
			count++;
		}
		printf("%d\n",count);
	}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值