c语言/计算日期的差值:编写一个函数,计算两个日期之间的时间差,并将其值返回。

题目:编写一个函数,计算两个日期之间的时间差,并将其值返回。日期以年月日表示,时间差以天数表示,注意考虑日期之间的闰年。函数的输入参数为日期1和日期2,函数的返回值为时间差,单位为天数。主函数输入日期,调用函数计算天数。

代码如下:   

#include <stdio.h>
#include <math.h>
int date_cha(int date1[3], int date2[3])
{
	int i = date1[0], j = date2[0];  //避免了date1[0]的改变所造成的数据错误
	int day = 0, z1 = 0, z2 = 0;//z1和z2分别date1[1]和date2[1]两个月份天数
	int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	day = (date2[0] - date1[0]) * 365;
	for (; date2[0] > date1[0]; date1[0]++)
		if (date1[0] % 400 == 0 || (date1[0] % 4 == 0 && date1[0] % 100 != 0))//判断是否为闰年
			day++;
	for (int m = 1; m <= 12; m++)
	{
		if (m <= date1[1])
			z1 += a[m];
		if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))//判断date1[0]是否为闰年
			z1++;
	}
	for (int m = 1; m <= 12; m++)
	{
		if (m <= date2[1])
			z2 += a[m];
		if (j % 400 == 0 || (j % 4 == 0 && j % 100 != 0))//判断date2[0]是否为闰年
			z2++;
	}
	return day += abs((z2+date2[2])-(z1+date1[2]));//abs表示取整数的绝对值
	
}
int main()
{
	int date1[3], date2[3];
	int i = 0,day=0;
	printf("请输入第一个日期:");//假设第一个日期早于第二个日期
	for (i = 0; i < 3; i++)
		scanf_s("%d", &date1[i]);
	printf("请输入第二个日期:");
	for (i = 0; i < 3; i++)
		scanf_s("%d", &date2[i]);
	day=date_cha(date1, date2);//函数传递代表两个日期的数组
	printf("相差的天数:%d", day);
	return 0;
}

 运行一个实例如下:

这有对abs和fabs函数的讲解:

c语言/abs()函数和fabs ()函数_m0_65178508的博客-CSDN博客c语言中存在两个函数表示一个数的绝对值abs()和fabs();要想引用这两个函数则需要引用头文件 #include<math.h>abs函数是对整数进行取绝对值fabs函数是对浮点型进行取绝对值cplusplus对abs和fabs()函数的理解如下:#include <math.h>int a=abs(-1);//里面可以表示一个表达式...https://blog.csdn.net/m0_65178508/article/details/122963531

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

目光所及。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值