学习笔记9:输入一个日期和一个整数n,输出从该日期起经过n天以后的日期

输入一个日期和一个整数n,输出从该日期起经过n天以后的日期

思路:函数调用,计算明天是哪一天,循环调用即可

函数1判断闰年

#include "head.h"

int isLeap(int year)
{
	if (0 == year % 4 && year % 100 || 0 == year % 400)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

函数2

#include "head.h"

int date_cacl(int year,int mon,int day,int n)
{
	int a[13] = { 31,28,31,30,31,30,31,31,30,31,30,31,0 };//a[13]用于判断是否跨年
	int i;
	int tmp1 = 0, sum = 0, tmp2 = 0;//tmp1用于记录天数,tmp2用于记录年份
	//step1:计算输入日期距离年初的天数
	for ( i = 0; i < mon-1; i++)
	{
		tmp1 += a[i];
	}
	tmp1 += day;
	if (mon>2&&isLeap(year))
	{
		tmp1 += 1;
	}
	tmp1 += n;//距离年初的总天数
	//step2:判断是否需要往前算日期,如:2020-3-15 计算-125天为 2019-11-13
	while (tmp1<0)
	{
		year = year - 1;
		tmp1 += 365;
		if (isLeap(tmp2))
		{
			tmp1 += 1;
		}
	}
	//step3:向后减,每次减一个月的天数,增加一个月
	for ( i = 1; tmp1>a[i] ;i++)
	{
		tmp1 -= a[i];
		if (2==i&&isLeap(year))
		{
			tmp1 -= 1;
		}
		if (a[i]==0)//已经过了365天,年份+1,回到1月
		{
			i = 1;
			year += 1;
		}
	}
	printf("经过%d天后的日期是%d-%d-%d\n", n, year, i, tmp1);
	return 0;
}

主函数

#include "head.h"

int main()
{
	int year, mon, day;
	int n;
	printf("请输入一个日期和一个整数n:\n");
	scanf("%d%d%d%d", &year, &mon, &day, &n);
	date_cacl(year, mon, day, n);
	system("pause");
	return 0;
}

输出效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值