前100个自然数的和

  • 本文关键字:自然数 100个 vb.net
  • 更新时间 :
  • 英文 :


新手;快速的家庭作业问题,我有困难。我必须求出前100个自然数的和。1+2+3+4,以此类推。当使用" 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作为我的答案。

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

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

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

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

由于你的问题标题要求所有[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}")

Sum: 5050, Sum偶数:2550,Sum赔率: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()

你的代码做了一些奇怪的事情。

让我们简化代码,看看哪里出错了。

首先,您将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的正确结果。

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

相关内容

  • 没有找到相关文章

最新更新