c++ - 该程序给出了错误的闰年输出负载变量的值是错误的我认为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";
}
}
解决方案
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
变量是合理的。
推荐阅读
- python - 是否可以使该算法递归?
- powershell - 在 Windows 10 上将 Postman post Request with Basic Auth 转换为 mingw64 curl 和 powershell
- python - 产生 int 时 pytorch Dataloader 错误“打开的文件太多”
- r - 如何在不重新分配的情况下从 C char* ptr 创建 RAWSXP 向量
- typescript - typescript 返回接口的属性数据,返回类型定义
- python - 为什么我不能将此列表转换为不规则张量?
- java - 如何在 dynamodb java aws sdk 2.x 的本地实例中配置端点?
- facebook - Facebook OpenGraph 问题
- javascript - 使用带有两个映射的三元运算符
- python - 即使在烧瓶中设置后,密钥也会出错