繁体   English   中英

不确定我在这里缺少什么? C#(30 天代码挑战;条件语句介绍)

[英]Not sure what I'm missing here? C#(30 Days of Code Challenge; Intro to Conditional Statements)

这是问题所在:

给定一个整数 ,执行以下条件操作:

如果是奇数,则打印 Weird
如果是偶数并且在 to 的包含范围内,则打印 Not Weird
如果是偶数并且在 to 的包含范围内,则打印 Weird
如果是偶数且大于 ,则打印 Not Weird

完成编辑器中提供的存根代码以打印是否奇怪。

输入格式:一行包含一个正整数 N。

约束条件: 1 <= n <= 100

输出格式如果数字很奇怪就打印"Weird" 否则,打印"Not Weird"

说明:示例案例 0:n=3

n 是奇数,奇数很奇怪,所以我们打印 Weird

示例案例 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 =“奇怪”

你的情况是不可能的。 例如...

        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");
        }

尝试这个:

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,它将进入下一个检查,它返回 true 并打印“Weird”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM