gpt4 book ai didi

c - 计算经过天数的公式

转载 作者:行者123 更新时间:2023-11-30 19:42:01 25 4
gpt4 key购买 nike

我正在执行一项任务(来自教科书),该任务应该计算两个日期之间经过的天数。我无法弄清楚公式末尾的天数是如何计算的。在教科书的示例中,根据以下公式,2004 年 8 月 8 日到 2005 年 2 月 22 日之间有 202 天:

N=1461 * f(year,month)/4 + 153 * g(month)/5 + day,
where f(year, month) = year -1 if month <=2
year otherwise
and g(month) = month + 13 if month <= 2
month + 1 otherwise

但没有说明如何计算最后一个变量“day”。在上面的示例中,最后一个变量“day”对于 N1 等于 3,对于 N2 等于 21。

Where do these numbers come from?

N1 = (1461 * 2004) / 4 + (153 * 9)/5 + 3,
N2 = (1461 * 2004) / 4 + (153 * 15)/5 + 21.

Also, how this formula was derived?

最佳答案

我已经根据公式编写了这个小程序,但我仍然无法弄清楚如何计算天数(在公式 data.day 的末尾):

// Program to compute the number of elapsed days

#include <stdio.h>

struct date
{
int month;
int day;
int year;
};

int number_of_days (struct date data);

int main (void)
{
int number1, number2;
struct date data1;
struct date data2;

printf ("Please, enter two dates (mm dd yyyy)");
scanf ("%i%i%i %i%i%i", &data1.month, &data1.day, &data1.year, &data2.month, &data2.day, &data2.year);

number1 = number_of_days(data1);
number2 = number_of_days(data2);

printf("The number of elapsed days is %i\n", number2 - number1);

return 0;
}

int number_of_days (struct date data)
{
int number;

if (data.month <= 2)
number = (1461 * (data.year - 1)) / 4 + (153 * (data.month + 13)) / 5 + data.day;
else
number = (1461 * data.year) / 4 + (153 * (data.month + 1)) / 5 + data.day;

return number;
}

关于c - 计算经过天数的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com