【发布时间】:2019-10-03 00:06:46
【问题描述】:
我的两个测试用例 18 和 20 没有得到预期的输出。
我编写了一个代码,用户必须输入一个小于 100 的整数,并且它应该根据以下条件打印 Weird 或 Not Weird:
"如果 n 是奇数,打印Weird",
"如果 n 是偶数并且在 2 到 5 的范围内,打印Not Weird",
"如果 n 是偶数并且在 6 到 20 的范围内,打印Weird",
“如果 n 是偶数且大于 20,则打印 Not Weird”。运行测试用例为 18 和 20 的代码,它应该为这两种情况打印Weird,但结果是Not Weird。
int main()
{
int i;
scanf("%d",&i);
if (i%2==0)
{
if(1<i<6)
{
printf("Not Weird");
}
else if(6<=i<=20)
{
printf("Weird");
}
else
{
printf("Not Weird");
}
}
else
{
printf("Weird");
}
return 0;
}
我已经尝试过其他测试用例,它们显示了预期的输出,但问题仅出现在 18 和 20 中。请帮助我解决错误。
【问题讨论】:
-
1<i<6和6<=i<=20不会像您认为的那样做 -
你确定这个
if(1<i<6)做了什么吗?i<6将是0或1所以1永远不会少于那个。 -
太多的python让你认为C也有操作符链,但它没有:)
-
@Jean-FrançoisFabre 或者数学太多
-
这就是 python 非常棒的地方,因为这种操作符链接功能非常直观(有时也会在 python 中引起灾难)