codeup墓地——————1928日期差值(闰年的判断方式,指针与引用)

问题 A: 日期差值

时间限制: 1 Sec  内存限制: 32 MB
提交: 2590  解决: 640
[提交][状态][讨论版][命题人:外部导入]

题目描述

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

输入

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

输出

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

样例输入

20130101
20130105

样例输出

5
#include<iostream>
using namespace std;

int check(int x){
	if(x%4==0&&x%100!=0)
		return 1;
	else if(x%100==0&&x%400==0)
		return 1;
	else return 0;
} 

//数值转换
void reve(int a,int &y,int &m,int &d){
//	int y,m,d;
	d=a%100;
	a=a/100;
	m=a%100;
	y=a/100;
}

int compu(int y,int m,int d){
	int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	long int sum=0;
	for(int i=1;i<y;i++){
		int k=check(i);
		if(k==1)
			sum+=366;
		else sum+=365;
	}
	int k=check(y);
	for(int i=1;i<m;i++){
		if(k==1&&i==2){
			sum+=29;
		}
		else sum+=a[i];
	}
	sum+=d;
	return sum;
}

int main(){
	int M,N;
	while(cin>>M>>N){
		int y1=0,m1=0,d1=0;
		int y2=0,m2=0,d2=0;
		reve(M,y1,m1,d1);
		reve(N,y2,m2,d2);
	    long int s1=compu(y1,m1,d1);
		long int s2=compu(y2,m2,d2);
		if(s2>=s1){
			cout<<s2-s1+1<<endl;
		}
		else cout<<s1-s2+1<<endl;
		
	}
	return 0;
} 

今天份总结:闰年的判断方式,指针与引用

猜你喜欢

转载自blog.csdn.net/qq_42499471/article/details/109129783