如何计算从10000年1月1日到任何指定日期(包括闰年)的天数? 我有一个C++项目,最终目标是创建一个月和年的日历。项目的一部分要求我首先计算从10000年1月1日到任何指定日期的天数。该函数必须采用三个参数,分别表示年、月和日。我是新的C++,所以请削减我一些松弛,如果有一些不正确使用的命令或逻辑。到目前为止,这是我所拥有的,但是当我测试它的时候,这些数字会相差几天。有人能告诉我我的代码哪里出错了吗 int const day_of_forever(int const year, int const month, int const day) { int count[]={0,31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; if ((year % 400==0) && (year % 100 != 0) && (year % 4 == 0 )&& (month>=2)) ((count[month-1]+day)+1); return (count[month-1]+day)+(((year)*365)+1) +((year)/4)-(year/100)+(year/400); } void main() { int const year=2000; int const day=1; int const month=1; int const something=day_of_forever(year,month,day); print (something); }

如何计算从10000年1月1日到任何指定日期(包括闰年)的天数? 我有一个C++项目,最终目标是创建一个月和年的日历。项目的一部分要求我首先计算从10000年1月1日到任何指定日期的天数。该函数必须采用三个参数,分别表示年、月和日。我是新的C++,所以请削减我一些松弛,如果有一些不正确使用的命令或逻辑。到目前为止,这是我所拥有的,但是当我测试它的时候,这些数字会相差几天。有人能告诉我我的代码哪里出错了吗 int const day_of_forever(int const year, int const month, int const day) { int count[]={0,31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; if ((year % 400==0) && (year % 100 != 0) && (year % 4 == 0 )&& (month>=2)) ((count[month-1]+day)+1); return (count[month-1]+day)+(((year)*365)+1) +((year)/4)-(year/100)+(year/400); } void main() { int const year=2000; int const day=1; int const month=1; int const something=day_of_forever(year,month,day); print (something); },c++,C++,你的问题陈述不明确。你不能只说“任何指定的日期”,因为很多日期都是模棱两可的,因为在不同的时间、不同的地点使用不同的日历。也许你应该坚持1800点以后的约会,以保持事情的可控性 在任何情况下,如果您正试图实施: 你不能解释这件事 如果你的语句没有做任何事情,它只会给某个东西加上1,然后把它扔掉 你在闰年测试中的逻辑是错误的。它说闰年必须是零mod 400和其他一些东西。但大多数都不是零模400 > +-+/逻辑在你的返回< /Cord>语句不考虑日期是闰日之前还是之后。 你没有考虑到朱利安公

你的问题陈述不明确。你不能只说“任何指定的日期”,因为很多日期都是模棱两可的,因为在不同的时间、不同的地点使用不同的日历。也许你应该坚持1800点以后的约会,以保持事情的可控性

在任何情况下,如果您正试图实施:

  • 你不能解释这件事

  • 如果你的
    语句没有做任何事情,它只会给某个东西加上1,然后把它扔掉

  • 你在闰年测试中的逻辑是错误的。它说闰年必须是零mod 400和其他一些东西。但大多数都不是零模400

  • <> > <代码> +-+/<代码>逻辑在你的<代码>返回< /Cord>语句不考虑日期是闰日之前还是之后。

  • 你没有考虑到朱利安公历。您可能需要或可能不需要,具体取决于输入日期的定义方式

  • 没有零年。所以1月1日,万人从未发生过


  • 你的闰年测试应该是这样的

    if( (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) && month >= 2)
    

    分享和享受。

    Mr.调试工具可以帮助您调试程序。当您使用调试工具时,结果是什么?您忘记了说明日期以及不同国家更改日历的不同日期。另外,您的代码声明所有闰年都是0 mod 400,这显然是不正确的。与
    if
    语句关联的语句没有任何作用。没有分配变量,没有调用函数。没有10000年1月1日,因为没有零年。分享和享受。@KeithThompson-hmmm…基于对《历法计算》(Reingold,Edward and Dershowitz,Nachum)的重读,千年版(2001年),第50页,第二段,在对公历的讨论中,作者声明“与儒略历不同,公历有零年”。他们还在第48页的一个脚注中指出,公元前1年之后是公元1年的惯例是由可敬的比德造成的,他不知道零。因此,关于公历,我的观点是正确的。:-)1752年,英国和属地(包括现在的美国)从儒略历改为公历。1582年,欧洲大部分地区发生了变化;直到20世纪,其他国家在不同的时期发生了变化。如果你想解释这些变化,你要么需要包括位置信息,要么承认你的结果只适用于某些地方。@KeithThompson我同意。这是一个令人惊讶的难题。朴素的问题陈述用短语“任何指定的日期”隐藏了这种复杂性,当然这一短语的定义不是很明确。(我补充了一些额外的说明。)实验室的指示是计算从10000年1月1日到指定日期的日期,包括闰年。这不是我的规定,这是实验作业本身。我想他们是这样做的,这样就更容易确定从哪里开始。我和教授都知道,没有10000年1月1日。我意识到我的逻辑是错误的,所以我尝试了两种不同的方法,一种是包含在if语句中,另一种是一个等式。我发布了两者的组合,以了解我应该走哪条路。很抱歉造成混淆。
    year%4=0
    nice try