首页 > 解决方案 > 该程序给出了错误的闰年输出负载变量的值是错误的我认为Ex.1900,1700

问题描述

*程序给出的世纪年输出错误,不是闰年 Ex.1900,1700。程序给出的闰年输出错误,负载变量的值是错误的,我认为 Ex.1900,1700。*

#include <iostream>

using namespace std;

int main()
{
    int year;
    bool t1=true;
    cout<<t1;
    bool t2=false;
    cin>>year;
    if(year%4==0)
    {
       int value=year%100?year%400?t1:t2:t1;
       cout<<value;
       if(value==t1)
       {
           cout<<"leap year";
       }
       else
       {
           cout<<"not a leap year";
       }
    }
    else
    {
        cout<<"not a leap year";
    }
}

标签: c++if-statementconditional-operatorleap-year

解决方案


year%100当能被 100 整除(余数为零)时变为假,当year不能被 100 整除(余数不为零)时变为真year

year%400当能被 400 整除(余数为零)时变为假,当year不能被 400 整除(余数不为零)时变为真year

因此,当year%100为假year%400为真时,必须判断为非闰年,否则判断为非闰年。

总之,这条线

int value=year%100?year%400?t1:t2:t1;

应该

bool value=year%100?t1:year%400?t2:t1;

另外我不认为int在这里分配bool变量是合理的。


推荐阅读