任意两天的日期差-----初学C语言

注意:2000年是闰年!!!!

#include<stdio.h>
int date(int n1,int y1,int r1,int n2,int y2,int r2);
int run_or_ping(int x);
inline int yue_r(int n,int y);
int main()
{
	int n1,y1,r1,n2,y2,r2;
	printf("请输入第一个较小的年月日,用空格分开\n");
	scanf("%04d%02d%02d",&n1,&y1,&r1);
	printf("请输入第二个较大的年月日,用空格分开\n");
	scanf("%04d%02d%02d",&n2,&y2,&r2);
	
	date(n1,y1,r1,n2,y2,r2);
	return 0;
}
int date(int n1,int y1,int r1,int n2,int y2,int r2)
{
	int i,j,z,sum=0,flag=0,sum1=0; 
	
	for(i=n1;i!=n2;i++)
	{
		if(run_or_ping(i)==1)
			sum=sum+366;
		else sum=sum+365;
	}
	if(y1<y2) 
		for(j=y1;j!=y2;j++)
		{
			sum=sum+yue_r(n2,j);
		}
	else
	{
		for(j=y2;j!=y1;j++)
			sum1=sum1+yue_r(n2,j);
		sum=sum-sum1;
	}

	sum=sum+r2-r1;
	printf("%04d.%02d.%02d~%04d.%02d.%02d相差%d天",n1,y1,r1,n2,y2,r2,sum);
	return 0;
}
int run_or_ping(int x)
{
	if(x%4==0)
		{
			if(x%100==0)
				if(x%400!=0)
					return 0;
			return 1;	
		}
	else return 0;
}
int yue_r(int n,int y)
{
	if(y==2)
	{
		if(run_or_ping(n)==1)
			return 29;
		else return 28;		
	}
	else if(y==4||y==6||y==9||y==11)
		return 30;
	else return 31;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值