闰年计算 - 家庭作业

时间:2012-09-25 22:12:16

标签: c++

#include <iostream>
using namespace std;

int main() {
    int what_year;

    cout << "Enter calendar year ";
    cin >> what_year;

    if (what_year - (n * 4) = 0 ) {

        cout << "leap year";
    }

    else
    {
        cout << "wont work";
    }

    system("Pause");
    return 0;
}

尝试为类创建一个程序,找到一个闰年..不知道如果一个整数可以被一个整数整除,怎么问C ++?

4 个答案:

答案 0 :(得分:9)

闰年规则是

 if year modulo 400 is 0 then
   is_leap_year
else if year modulo 100 is 0 then
   not_leap_year
else if year modulo 4 is 0 then
   is_leap_year
else
   not_leap_year

http://en.wikipedia.org/wiki/Leap_year#Algorithm

您可以使用modulo operator查看一个数字是否可以被另一个数字整除,即如果该部门没有余数。

  

2000%400 = 0 //甚至可以被400整除

     

2001%400 = 1 //不能被400整除

有趣的是,一些着名的软件实施并没有应用“400”部分,这导致2000年2月29日不存在这些系统。

答案 1 :(得分:4)

改为使用

bool bLeapYear = false;
if ((what_year % 4) ==0)  {
     if ((what_year % 100) == 0) {
          bLeapYear = ((what_year % 400) == 0);
     } else {
          bLeapYear = true;
     }
     // leap year
}

这将除以4后的剩余时间,并测试是否为零。使用=而不是==时也遇到了问题 - 后者测试是否相等,前者指定了值。

编辑:根据史蒂夫的评论编辑。

答案 2 :(得分:3)

使用模数函数。

if ((year % 4) == 0)
{
//leap year
}

请注意,这并不能解释100年和400年的跳跃。

正确的代码就像

if(((year%4) == 0) && (((year%100)!=0) || ((year%400) == 0))
{
//leap year
}

答案 3 :(得分:1)

根据决定一年是否跳跃的一些规则,一年应该可以被4整除,而那些可以被100整除的年份,它也应该被400整除。

int year;
cout << "Enter a year: ";
cin >> year;

if (year%4 == 0) {
    if (year%100 == 0) {
        if (year%400 == 0) {
            cout << year << " is a leap year.";
        }
        else {
            cout << year << " is not a leap year.";
        }
    }
    else {
        cout << year << " is a leap year.";
    }
}
else {
    cout << year << " is not a leap year.";
}

return 0;}