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#アルゴリズム

モジュロ演算子を使用して、ある数値が別の数値で割り切れるかどうか、つまり、除算の剰余がないかどうかを確認できます。

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

According to some rules that decide whether a year is leap or not, a year should be divisible by 4 and for those years that are divisible by 100, it should also be divisible by 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 に答える