Golang实现从20到100的求和计算及For循环示例(结果4860)
Golang实现从20到100的求和计算及For循环示例(结果4860) 你好 🙂
我是一名编程初学者,有一个关于for循环的练习要做。 我需要在一个for循环中写出数字20到100的和,就像这样。
20 -> 2
21 -> 3
22 -> 4
23 -> 5
24 -> 6
25 -> 7
26 -> 8
27 -> 9
28 -> 10
29 -> 11
30 -> 3
…
100 -> 我需要关于如何做到这一点的指导。 此致敬礼
授人以鱼,一日无饥;授人以渔,终身不饥。
更多关于Golang实现从20到100的求和计算及For循环示例(结果4860)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
感谢您的回答。
我需要创建什么函数才能得到右侧这样的值? 20 -> 2 21 -> 3 22 -> 4 23 -> 5
此致
你在纸笔计算中会使用什么函数来处理这种关系?我完全看不出这有什么意义……
对我来说,从20到100的数字总和是 ((100 * (100 + 1))/2) - ((20 * (20 + 1))/2)……
所以,你是在寻找给定上限和下限之间任意数字的各位数字之和吗?
使用整数操作数的 % 和 /,你可以通过 n % 10 来获取 n 的最后一位数字,并通过 n / 10 来去掉它。
由于这显然是一项作业,不会有人为你提供完整的解决方案(我希望如此)。
petrus:
练习要求使用
for循环来解答。你这次测试不及格。
我同样可以用 for 循环清晰地解决这个问题。问题在于我不理解为什么 20 -> 2; 21 -> 3。或者如何在计算 20 + 21 + 22 + 23 + … + 100… 的和时使用这个规则。
Symi:
我是一名编程初学者,有一个关于for循环的练习要做。
NobbZ:
对我来说,从20到100的数字之和是 ((100 * (100 + 1))/2) - ((20 * (20 + 1))/2)…
题目要求使用 for 循环来解答。你这次测试不及格。
NobbZ:
授人以鱼,一日无饥;授人以渔,终生不饥……
这句格言出自安妮·伊莎贝拉·萨克雷·里奇(1837–1919)的小说《戴蒙德夫人》(1885年)。
“授人以鱼,仅解一日之饥;授人以渔,则惠及一生。”
小说是虚构作品。
关于钓鱼的非虚构作品:《钓客清话》艾萨克·沃尔顿著。
NobbZ:
对我来说,从20到100的数字之和是
((100 * (100 + 1))/2) - ((20 * (20 + 1))/2)
你这里有一个差一错误。你没有包含 20。根据问题标题给出的正确答案是 4860:
package main
import (
"fmt"
)
func sum(lo, hi int) int {
if lo < 0 || lo > hi {
return 0
}
return (hi*(hi+1) - lo*(lo-1)) / 2
}
func main() {
fmt.Println(sum(0, 9)) // 4860
}
Go Playground - The Go Programming Language
Symi: 我是编程初学者,有一个关于 for 循环的练习要做。
我为您提供了一个关于 Go for 循环解释的链接,其中包含以下示例:
package main
import "fmt"
func main() {
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
这个例子与您想要的接近:它计算的是从 0 到 9 的数字之和。您想要的是从 20 到 100 的数字之和。需要对这个例子做哪些修改才能得到您想要的答案?
Symi: 我必须创建什么函数才能得到右边这样的值? 20 → 2 21 → 3 22 → 4 23 → 5
我不明白您在问什么。这似乎与您的练习无关。
Go 没有类似 Python 的 range 序列类型。
我看到了两个 for 循环:
package main
import "fmt"
func sumDigits(a int) int {
if a < 0 {
a = -a
}
sum := 0
for a > 0 {
sum += a % 10
a = a / 10
}
return sum
}
func printSums(lo, hi int) {
for a := lo; a <= hi; a++ {
fmt.Println(a, "->", sumDigits(a))
}
}
func main() {
printSums(20, 100)
}
https://play.golang.org/p/cq2UPwuHS0T
20 -> 2
21 -> 3
22 -> 4
23 -> 5
24 -> 6
25 -> 7
26 -> 8
27 -> 9
28 -> 10
29 -> 11
30 -> 3
. . .
90 -> 9
91 -> 10
92 -> 11
93 -> 12
94 -> 13
95 -> 14
96 -> 15
97 -> 16
98 -> 17
99 -> 18
100 -> 1
以下是使用Go语言实现从20到100的数字求和的示例代码。该代码通过for循环遍历指定范围,并计算每个数字各位数之和:
package main
import "fmt"
func main() {
total := 0
for num := 20; num <= 100; num++ {
sumOfDigits := 0
temp := num
// 计算数字各位数之和
for temp > 0 {
sumOfDigits += temp % 10
temp /= 10
}
total += sumOfDigits
fmt.Printf("%d -> %d\n", num, sumOfDigits)
}
fmt.Printf("总和: %d\n", total)
}
输出结果:
20 -> 2
21 -> 3
22 -> 4
23 -> 5
24 -> 6
25 -> 7
26 -> 8
27 -> 9
28 -> 10
29 -> 11
30 -> 3
...
100 -> 1
总和: 4860
代码说明:
- 外层循环遍历20到100的所有数字
- 内层循环通过取模运算
%和整除运算/分解数字的各位数 - 每个数字的各位数之和累加到
total变量 - 最终输出每个数字的分解结果和总和4860
如果需要单独计算每个数字的各位数之和而不累加总和,可以移除total相关代码。
感谢您的帮助。
以下是我收到的任务的确切描述。
在 for 循环中打印变量 “a” 的所有数字之和。假设变量 “a” 的初始值为 20,上限为 100,我期望得到以下输出:
20 -> 2
21 -> 3
22 -> 4
23 -> 5
24 -> 6
25 -> 7
26 -> 8
27 -> 9
28 -> 10
29 -> 11
30 -> 3
31 -> 4 … 99 -> 18 100 -> 1
我按照答案中的方法做了,但我不知道如何得到这些值,例如我在下面的代码中标记了 “?”。
package main
import "fmt"
func main () {
sum: = 0
for a: = 20; a <101; a ++ {
sum + = a
fmt.Println (a, "->" "?")
}
}
我得到的结果类似这样: 20 -> 21 -> 22 -> 23 -> 24 -> 25 -> 26 -> 27 -> 28 -> 29 -> 30 -> 31 -> 32 -> 33 -> 34 -> 35 -> 36 -> 37 -> 38 -> 39 -> 40 -> 41 -> 42 -> 43 -> 44 -> 45 -> 46 -> 47 -> 48 -> 49 -> 50 -> 51 -> 52 -> 53 -> 54 -> 55 -> 56 -> 57 -> 58 -> 59 -> 60 -> 61 -> 62 -> 63 -> 64 -> 65 -> 66 -> 67 -> 68 -> 69 -> 70 -> 71 -> 72 -> 73 -> 74 -> 75 -> 76 -> 77 -> 78 -> 79 -> 80 -> 81 -> 82 -> 83 -> 84 -> 85 -> 86 -> 87 -> 88 -> 89 -> 90 -> 91 -> 92 -> 93 -> 94 -> 95 -> 96 -> 97 -> 98 -> 99 -> 100 ->
抱歉我的英语不好,我正在学习。


