在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中找到下一个闰年[关闭]的主要内容,如果未能解决你的问题,请参考以下文章