5
#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

4 回答 4

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

您可以使用模运算符来查看一个数是否可​​以被另一个数整除,即除法是否没有余数。

2000 % 400 = 0 // 能被 400 整除

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

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

于 2012-09-25T22:15:44.233 回答
4

使用模函数。

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

请注意,这不考虑 100 年和 400 年的跳跃。

正确的代码类似于

if(((year%4) == 0) && (((year%100)!=0) || ((year%400) == 0))
{
//leap year
}
于 2012-09-25T22:13:01.410 回答
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 后一年的剩余时间,并测试它是否为零。你也有使用=代替的问题==- 后者测试相等,前者分配一个值。

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

于 2012-09-25T22:14:32.980 回答
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;}
于 2016-07-23T13:21:14.483 回答