日期间隔计算器

 日期间隔计算器,连续两天间隔记为一天

#include<stdio.h>
//日期暴力计算
const int maxn = 20;
int mon[maxn] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
struct Date { int y, m, d; }now;
struct Datel { int y, m, d; }future;
//闰年判断
int is_run(int year)
{
	if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		return 1;
	return 0;
}
//主程序
int main()
{
	printf("请输入您所要查询的开始日期:");
	scanf_s("%d %d %d", &now.y, &now.m, &now.d);
	printf("请输入您所要查询的结束日期:");
	scanf_s("%d %d %d", &future.y, &future.m, &future.d);
	int n1 = 0, n2 = 0, n = 0;
	if (now.m >= 3)
	{
		for (int i = 3; i < now.m; i++)
		{
			n1 += mon[i];
		}
		n1 += now.d;
		n1 = (-n1);
	}
	else
	{
		for (int i = 1; i < now.m; i++)
		{
			n1 += mon[i];
		}
		n1 += now.d;
		if (is_run(now.y))
		{
			n1 = 60 - n1;
		}
		else
		{
			n1 = 59 - n1;
		}	
	}
	if (future.m >= 3)
	{
		for (int i = 3; i < future.m; i++)
		{
			n2 += mon[i];
		}
		n2 += future.d;
	}
	else
	{
		for (int i = 1; i < future.m; i++)
		{
			n2 += mon[i];
		}
		n2 += future.d;
		if (is_run(future.y))
		{
			n2 = 60 - n2;
		}
		else
		{
			n2 = 59 - n2;
		}
		n2 = (-n2);
	}
	for (int i = now.y + 1; i <= future.y; i++)
	{
		if (is_run(i))
		{
			n += 366;
		}
		else
		{
			n += 365;
		}
	}
	n = n + n1 + n2;
	printf("日期间隔天数为%d", n);

	return 0;
}

学习记录用,代码有待完善。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值