【问题标题】:Array of total even numbers总偶数数组
【发布时间】:2021-12-11 11:43:15
【问题描述】:

抱歉,我还在学习如何编码。我的问题很简单。 我正在尝试制作一个 int 数组,该数组将偶数的总数相加。我的问题是由于某种原因我的代码将 1 计为偶数。

            int[] nums = new[] { 1, 5, 8, 9, 10, 25, 40 };
            int even = 0;
            int odd = 0;
            for (int i =0 ; i < nums.Length; i++)
            {
                if (i % 2 == 0)
                {
                    even += nums[i];                    
                }

                else
                {
                    odd += nums[i];                   
                }
            }
                Console.WriteLine(even);
                Console.WriteLine(odd);

输出将是: 59 和 39

【问题讨论】:

  • 奇数的总和更有趣:1, 1+3=4, 1+3+5=9, 1+3+5+7=16, 1+3+5+7+9=25 和其余的平方

标签: c# arrays integer


【解决方案1】:

除了其他人给出的回复之外,您还可以通过检查最后一位来提高代码效率。基本上,奇数的最后一位将始终为 1,因此您可以执行类似的操作

if ((nums[i] & 1) == 0)...

与运算通常比未优化的 % 运算快得多,后者先进行除法,然后再计算余数。

【讨论】:

    【解决方案2】:

    您正在检查循环索引i 的奇偶校验。在 for 循环中使用 nums[i] 代替:

    if (nums[i] % 2 == 0)
    // ... rest of code
    

    【讨论】:

      【解决方案3】:

      嘿,在if() 条件下的代码中,您正在检查索引,但需要检查 像nums[i] ==&gt; 这样的数组值将给出具有值的数组

      你的代码if (i % 2 == 0)

      就位,如果索引只需将其更改为nums[i]%2

      【讨论】:

        【解决方案4】:

        你可以使用foreach循环:

                foreach (var num in nums)
                {
                    if (num % 2 == 0)
                    {
                        even += num;                    
                    }
                    else
                    {
                        odd += num;                   
                    }
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-12
          • 2015-08-22
          • 2014-06-08
          • 2021-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多