我在做作业时遇到了麻烦。
我必须创建一个函数,告诉我下一个闰年何时被赋予n
(如果它是闰年,则为n
。
我已经解决了最后一部分,但是我在下一个闰年时遇到了问题"部分。我想我必须做一个循环?
这是我到目前为止所拥有的
int next_leapyear(int n)
{
if(((n%4==0)&&(n%100!=0))||(n%400==0)) return n;
else
while(?){
n++;
}
return n;
}
我刚刚开始学习这门语言,所以如果你们能保持简单,我会很感激
答案 0 :(得分:3)
该任务可分为两部分。首先,可以检查给定的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;
}
答案 1 :(得分:0)
增加n
,直到您的if
语句条件不成立为止,因此有两种方法可以将条件置于括号中,这是直接的。
第二个是,无限循环运行并在循环中放入破坏条件
while(1){
n++;
if(((n%4==0)&&(n%100!=0))||(n%400==0)) break;
}
答案 2 :(得分:0)
你想要增加一年直到闰年将会有效,但效率并不高,因为你必须做很多模数,这是一个非常昂贵的操作
事实上,为了找到下一个正常的闰年,您只需将年份推至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;
}