注册 登录
编程论坛 C++教室

用嵌套if语句实现判断一个年份是否为闰年,有几处看不懂的,求指教,谢谢

随风晨爱 发布于 2018-10-16 13:11, 4263 次点击
闰年,1.能被4整除,但不能被一百整除。2.能被400 整除的年份都是闰年
嵌套if语句如下:
#include <iostream>
using namespace std;
int main ()
{
    int year;
    bool leap;
    cout << "please enter year" << endl;
    cin >> year;
    if (year%4 == 0)
    {
        if (year%100 == 0)
        {
            if(year%400 == 0) leap=true;
            else leap=false;
        }
        else leap=true;
    }
    else leap=false;
    if (leap)
        cout << year << " is";
        else
        cout << year << " is not";
    cout << " a leap year." << endl;
    return 0;
}
if (year%4 == 0)对应的是else leap=true;这个语句吗,如果是但是还少一个不能被一百整除的条件,同样的第二个大括号里面的if (year%100 == 0),对应的语句是else leap=true,这个嵌套语句怎么理解呢,每个if语句是什么关系,比较然,求指教
5 回复
#2
no1xijin2018-10-16 13:51
同一颜色为一套if...else...
#include <iostream>
using namespace std;
int main ()
{
    int year;
    bool leap;
    cout << "please enter year" << endl;
    cin >> year;
    if (year%4 == 0)
    {
        if (year%100 == 0)
        {
            if(year%400 == 0) leap=true;
            else leap=false;
        }
        else leap=true;
    }
    else leap=false;
    if (leap)
        cout << year << " is";
        else
        cout << year << " is not";
    cout << " a leap year." << endl;
    return 0;
}
#3
随风晨爱2018-10-16 14:20
回复 2楼 no1xijin
谢谢你的指点,每个颜色对应为一套,是判断了turn和false,但是语句之间的逻辑关系是怎样的,如题1.能被4整除,但不能被一百整除。这样的条件程序中式如何也体现的,2.能被400 整除的年份都是闰年,这样的条件程序中式如何也体现的,我有点懵
#4
no1xijin2018-10-16 16:51
条件1,2是或关系,满足任一条件的年份都是闰年,两个条件都不能满足的年份都不是闰年。
代码中按数字顺序看,同一颜色表示对应的逻辑和代码。
#include <iostream>
using namespace std;
int main ()
{
    int year;
    bool leap;
    cout << "please enter year" << endl;
    cin >> year;
    if (year%4 == 0)
    {
        if (year%100 == 0)  
        {
            if(year%400 == 0) leap=true; // 3.能被4整除,能被100整除,不满足条件1,检查是否满足条件2,:能被能被400 整除满足条件2,即闰年
            else leap=false; //4.不能被能被400 整除,条件1和2无一满足,即非闰年
        }
        else leap=true; // 2.能被4整除,无法被100整除,满足条件1,即闰年
    }
    else leap=false;  // 1.不能被4整除,也就无法被100和400整除,条件1和2无一满足即非闰年
    if (leap)
        cout << year << " is";
        else
        cout << year << " is not";
    cout << " a leap year." << endl;
    return 0;
}

[此贴子已经被作者于2018-10-16 16:53编辑过]

#5
随风晨爱2018-10-16 21:03
回复 4楼 no1xijin
明白了,谢谢
#6
cn闹闹爸2018-10-21 18:20
1