在C中找到下一个闰年[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C中找到下一个闰年[关闭]相关的知识,希望对你有一定的参考价值。

我在做作业时遇到了麻烦。我必须创建一个函数,告诉我下一个闰年何时给出n(如果是闰年,则为n)。

我已经解决了最后一部分,但我遇到了“下一个闰年”部分的问题。我想我必须做一个循环?

这是我到目前为止所拥有的

int next_leapyear(int n) 
{

    if(((n%4==0)&&(n%100!=0))||(n%400==0)) return n;

    else
    while(?){
      n++;
     }

     return n;
}

我刚开始学习这门语言,所以如果你们能保持简单,我会很感激

答案

增加n直到你的if声明条件不正确所以有两种方法你可以把条件放入括号,这是直接的。

第二个是,无限次运行循环并在循环内放置破坏条件

while(1){
      n++;
if(((n%4==0)&&(n%100!=0))||(n%400==0)) break;

     }
另一答案

任务可以分为两部分。首先,可以检查给定的n是否是闰年,可以使用以下函数来完成。

int IsLeapYear(int n)
{
    return (((n%4==0)&&(n%100!=0))||(n%400==0));
}

接下来,可以使用基于上述函数的循环来增加n直到它是闰年。这可以如下完成。

int GetNextLeapYear(int n)
{
    int CurrentYear = n;
    while(!IsLeapYear(CurrentYear))
    {
        CurrentYear++;
    }
    return CurrentYear;
}
另一答案

你想把这一年增加到闰年的想法会有效,但效率并不高,因为你必须做很多模数,这是一项非常昂贵的操作。

事实上,为了找到下一个正常的闰年,您只需要将年份转换为next multiple of 4,这可以通过这些中的任何一个实现。

year = (year + 3) & ~0x03;
year = (year | 0x03) + 1;

如果后面的圆形它是100的倍数,那么只需加4即可获得正确的年份。所以实现可能是这样的

int next_leapyear(int n)
{
    n = (n + 3) & ~3;
    if (n % 100 == 0) n += 4;
    return n;
}

以上是关于在C中找到下一个闰年[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程计算闰年

用JAVA判断是不是是闰年

Android:如何在选项卡内从一个片段导航到另一个片段? [关闭]

为 Blogger 上的博客格式化代码片段 [关闭]

C语言如何判断某一年是不是是闰年

Jquery datepicker显示闰年的错误日期[关闭]