计算两个日期之间相隔的天数

/*******************************************************
	程序内容:计算从一个日期到另一个日期一共经历的天数
*******************************************************/

#include<iostream>
using namespace std;

int isprime_Month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int notprime_Month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int isprime(int year){
	return (((year%4==0)&&(year%100)!=0)||(year%400==0))?1:0;
} 

int main(){
	int pre_year,pre_month,pre_day,later_year,later_month,later_day;
	int sum=0;
	cout<<"Please enter a previous date:";
	cin>>pre_year>>pre_month>>pre_day;
	cout<<"Please enter a later date:";
	cin>>later_year>>later_month>>later_day;
	if(pre_year==later_year&&pre_month==later_month){
		sum=later_day-pre_day;
	}
	else{
		for(int i=pre_year+1;i<=later_year-1;i++){
			if(isprime(i))
				sum+=366;
			else
				sum+=365;
		}
		if(pre_year==later_year){
			for(int i=pre_month+1;i<=later_month-1;i++){
				if(isprime(pre_year))
					sum+=isprime_Month[i];
				else
					sum+=notprime_Month[i];
			}
		}
		else{
			for(int i=pre_month+1;i<=12;i++){
				if(isprime(pre_year))
					sum+=isprime_Month[i];
				else
					sum+=notprime_Month[i];
			}
			for(int i=1;i<=later_month-1;i++){
				if(isprime(pre_year))
					sum+=isprime_Month[i];
				else
					sum+=notprime_Month[i];
			}
		}
		if(isprime(pre_year))
			sum+=(isprime_Month[pre_month]-pre_day);
		else
			sum+=(notprime_Month[pre_month]-pre_day);
		sum+=later_day;
	}
	
	cout<<"sum is "<<sum;
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值