新手;快速的家庭作业问题,我有困难。我必须求出前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