前100个自然数之和
The sum of the first natural 100 numbers
编码新手,
快速家庭作业问题我遇到了麻烦。
我必须找到前 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。
While count <= 100
num += count
count += 1
End While
Sum = num
您不需要 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 evens: 2550, Sum odds: 2500
Enumerable.Range(1, 100)
创建所有 [1 - 100] 的序列。调用 LINQ 函数 Sum
来简单地获取总和,或者您可以将 lambda 函数传递给 Sum
以转换数字。使用 Mod
到 select 偶数或赔率。上面的方法将偶数的赔率设置为 0,将赔率设置为 vice-versa。
这种转换序列方法的替代方法是仅使用 Where
到 select 偶数然后 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
的正确结果。
编码新手, 快速家庭作业问题我遇到了麻烦。 我必须找到前 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。
While count <= 100
num += count
count += 1
End While
Sum = num
您不需要 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 evens: 2550, Sum odds: 2500
Enumerable.Range(1, 100)
创建所有 [1 - 100] 的序列。调用 LINQ 函数 Sum
来简单地获取总和,或者您可以将 lambda 函数传递给 Sum
以转换数字。使用 Mod
到 select 偶数或赔率。上面的方法将偶数的赔率设置为 0,将赔率设置为 vice-versa。
这种转换序列方法的替代方法是仅使用 Where
到 select 偶数然后 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
的正确结果。