问题出在这里
给出一个整数,,执行以下条件操作:
如果是奇数,请打印怪异
如果是偶数且在to的范围内,则打印Not Weird
如果是偶数且在to的范围内,则打印Weird
如果大于等于,则打印Not Weird
完成编辑器中提供的存根代码以打印是否奇怪。
输入格式:包含正整数N的一行。
约束:1 <= n <= 100
输出格式
如果数字很奇怪,请打印"Weird"
;否则,打印"Not Weird"
说明: 示例案例0:n = 3
n是奇数,奇数是奇数,所以我们打印怪异
示例案例1:n = 24 n> 20且n为偶数,因此并不奇怪。因此,我们打印了Not Weird。
我以前做过这样的事情,但是我不确定丢失了什么。
它通过了测试用例0、1、4、5、6,但未通过2、3和7。 测试用例2是4,什么也没发生 测试用例3是18,什么也没发生 测试案例7是20,什么也没发生
Console.WriteLine("Enter:");
int N = Convert.ToInt32(Console.ReadLine());
if (N % 2 == 1)
{
Console.WriteLine("Weird");
}
else if (N % 2 == 0 && (N <= 2 && N >= 5))
{
Console.WriteLine("Not Weird");
}
else if (N % 2 == 0 && (N <= 6 && N >= 20))
{
Console.WriteLine("Weird");
}
else if (N % 2 == 0 && N > 20)
{
Console.WriteLine("Not Weird");
}
案例2为4 =“不奇怪” 情况3为18 =“怪异” 情况7为20 =“怪异”
答案 0 :(得分:2)
您的情况是不可能的。例如...
else if (N % 2 == 0 && (N <= 6 && N >= 20))
{
Console.WriteLine("Weird");
}
将永远不会发生。您正在寻找的数字是<= 6 AND> =20。不确定您的描述,但听起来您可能需要切换顺序-例如:
else if (N % 2 == 0 && (N >= 6 && N <= 20))
{
Console.WriteLine("Weird");
}
此外,由于您已经确定从第一个if语句起的数字是偶数,因此可以简化一下。
else if (N >= 6 && N <= 20)
{
Console.WriteLine("Weird");
}
答案 1 :(得分:0)
试试这个:
if(N <= 1|| N >= 100){
Console.WriteLine("Number can not be less then 1 and bigger then 100");
}
else{
string evenOdd = N % 2 == 0 ? "even" : "odd";
if(evenOdd == "even"){
if(N >=2 || N <= 5){
Console.WriteLine("Not Weird");
}
else if(N >= 6 || N <= 20){
Console.WriteLine("Weird");
}
else{
Console.WriteLine("Not Weird");
}
}
if(evenOdd == "odd"){
Console.WriteLine("Weird");
}
}
首先检查输入的数字(本例为N)是否大于100小于0,然后声明字符串变量,同时用三元运算初始化,检查“是否为偶数”或奇数”(在这里我称她为“evenOdd”)。如果是偶数,则“evenOdd”的值将是偶数,反之亦然。因为任务要求是(如果是偶数且 N >= 2 且 N <= 5 打印“Not Weird”,N >= 6 且 N <= 20 打印“Weird”,N >= 20 打印“Not Weird”并且还如果是“even”打印“Not Weird”和“odd”打印“Weird”,首先检查这个“if”里面的“evenOdd”是否是“even”,我做剩下的检查(N >= 2 or N < = 5 打印“Not Weird”等等)之后(evenOdd 是偶数)我再做一次检查(如果 evenOdd 是奇数打印“Weird”)。简而言之:N 如果是 6,将检查第一次检查并返回“false” ”,然后会进入“else”。因为6是“偶”,那么“evenOdd”的值会是“偶”,会进入第一个“if,因为在第一次检查时它大于5,返回false,因为是6,所以会进入下一个check,返回true,打印“Weird”。