0
点赞
收藏
分享

微信扫一扫

入门模拟之日期差值

科牛 2022-02-02 阅读 71
c++c语言
                             **日期差值**

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

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

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

示例1
输入:
20110412
20110422

输出:
11

思路:分别求与00000000的天数差,俩差值继续做差即可求出结果

#include<iostream>
#include<cstdlib>
using namespace std;

//求12个月份的累加和,1月和12月只需要计算天数即可 
int mon[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int Add(int y,int m,int d)
{
	int num=y*365;
	//求包含的闰年数 
	for(int i=0;i<=y;i++)
	{
		if((i%4==0&&i%100!=0)||i%400==0) num++;
	}
	//可替换为int num=y*365+y/4-y/100+y/400;
	//求当前年的天数 
	num+=mon[m-1];
	//月超过2并且是闰年就加一天 
	if(m>2&&((y%4==0&&y%100!=0)||y%400==0)) num++;
	//加上当前月的天数 
	num+=d;
	return num;
}

int main()
{
	int y1,m1,d1,y2,m2,d2;
    scanf("%4d%2d%2d",&y1,&m1,&d1);//一定要格式输入,否则输入不对 
    int n1=Add(y1,m1,d1);
    scanf("%4d%2d%2d",&y2,&m2,&d2);
    int n2=Add(y2,m2,d2);
	cout<<abs(n1-n2)+1<<endl;//abs求绝对值的函数,cstdlib头文件 
	return 0;
}
举报

相关推荐

0 条评论