C语言作业:计算后续日期

本文介绍了一个C语言程序,用于计算给定年月日后的N天日期,采用进位法处理月份和年份的递增,适用于判断闰年的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

我们经常要计算,从今天往后N天之后是哪一天(哪年哪月哪日)。现在我们就可以编写一个程序,推算指定日期之后的第N天是什么日期。

输入:
  年 月 日
  N

输出:
(年月日+N天后的)年.月.日

算法

这是这个解法中最有趣的部分。先将N加到输入的“日”上,然后判断“日”的值是否超过了当月最大的天数,若为真则月+1;判断“月”是否超过了12,若为真则年+1,月=1。循环往复,知道“日”小于等于当月的最大天数。

代码

#include <stdio.h>

/*自定义数组赋值函数*/
void equal(int ed[12], int ing[12])
{
	int i;
	for (i = 0; i <= 11; i++)
	{
		ed[i] = ing[i];
	}
}

int main(void)
{
	int year, month, day, period,everym[12];
	int run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
	int nor[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };

	scanf("%d %d %d %d", &year, &month, &day, &period);
	day = day + period;

	do
	{
		if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) equal(everym, run);
		else equal(everym, nor);
		if (day > everym[month - 1])
		{
			day = day - everym[month - 1];
			month = month + 1;
			if (month > 12)
			{
				year = year + 1;
				month = 1;
			}
		}
	}while (day > everym[month - 1]);

	printf("%d.%d.%d\n", year, month, day);

	return 0;
}

后来听搞竞赛的同学说这个算法是有名字的,好像是叫进位法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张向南zhangxn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值