【问题标题】:The sum of the first natural 100 numbers前100个自然数之和
【发布时间】:2021-10-28 15:32:35
【问题描述】:

编码新手, 快速作业问题我遇到了麻烦。 我必须找到前 100 个自然数的总和。 1+2+3+4,以此类推。 While 使用“while 循环”。

这是我目前所拥有的。

    Dim sum, count As Integer
    Const num As Integer = 1

    Console.WriteLine("The Sum of the first 100 natural numbers is:") 

 

    count = num + 1

    While count <= 100 
        Count = num + count
        
    End While
        Sum = count

    Console.WriteLine("{0}", sum) 
    Console.ReadLine()

我确实知道数学和 while 循环不正确,但我不知道如何解决它。我一直得到 101 作为我的答案。

【问题讨论】:

  • 添加打印语句有什么问题看看会发生什么,将循环测试降低到10以限制文本转储,即所谓调试
  • Enumerable.Range(1,100).Sum()

标签: vb.net


【解决方案1】:

你不需要 num 常量和行:count = num + 1

 While count <= 100
    sum += count
    count += 1
 End While

【讨论】:

  • 谢谢你,成功了。将 100 更改为 200 并添加一个除法方程是否会使其将所有前 100 个偶数加在一起?
【解决方案2】:

我知道你正在学习,解决方案必须使用 While 循环,但为了好玩,看看你可以用 2 行代码做什么。

    Dim arrNumbers = Enumerable.Range(1, 100).ToArray
    Console.WriteLine(arrNumbers.Sum)

【讨论】:

  • 谢谢,这让我想知道为什么我没有被教这个,而是大声笑。
  • 因为他们试图教你思考如何编程。任何人都可以使用库,但知道如何编码更为重要。
【解决方案3】:

由于您的问题标题要求提供所有 [1 - 100] 的总和以及偶数和赔率,因此这里是每个 LINQ 的一些

Dim sum = Enumerable.Range(1, 100).Sum()
Dim sumEvens = Enumerable.Range(1, 100).Sum(Function(i) If(i Mod 2 = 0, i, 0))
Dim sumOdds = Enumerable.Range(1, 100).Sum(Function(i) If(i Mod 2 = 0, 0, i))
Console.WriteLine($"Sum: {sum}, Sum evens: {sumEvens}, Sum odds: {sumOdds}")

总和:5050,总和:2550,总赔率:2500

Enumerable.Range(1, 100) 创建所有 [1 - 100] 的序列。调用 LINQ 函数 Sum 来简单地获取总和,或者您可以将 lambda 函数传递给 Sum 来转换数字。使用Mod 选择偶数或赔率。上述方法将偶数的赔率设置为 0,反之亦然。

这种转换序列的方法的替代方法是使用Where 仅选择偶数,然后使用Sum,这可能更具可读性。

Dim sumEvens = Enumerable.Range(1, 100).Where(Function(i) i Mod 2 = 0).Sum()

【讨论】:

    【解决方案4】:

    使用您的代码,您以一种奇怪的方式做了一些事情。

    让我们简化代码,看看出了什么问题。

    首先将num 设置为1 的值的常量。由于它没有变化,我们将直接将值放入。

    你会得到这个:

    count = 1 + 1
    
    While count <= 100
        count = 1 + count
    End While
    
    sum = count
    

    这意味着count 将从2 开始并上升一直到count 的值大于100 - 这就是当它是101

    然后你将sum 设置为count 并得到101

    您需要做的是将count 启动为1 并总结循环内的值。

    count = 1
    
    While count <= 100
        sum = sum + count
        count = count + 1
    End While
    

    这给出了5050 的正确结果。

    【讨论】:

      【解决方案5】:
      While count <= 100 
          num += count
          count += 1        
      End While
          Sum = num
      

      【讨论】:

      • 此代码在粘贴到 OP 的代码中时甚至无法编译。
      • 事实检查再次@Enigmativity,我们的代码没有任何问题。
      猜你喜欢
      • 2020-12-28
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多