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 -> 我需要关于如何做到这一点的指导。 此致敬礼

13 回复

授人以鱼,一日无饥;授人以渔,终身不饥。

更多关于Golang实现从20到100的求和计算及For循环示例(结果4860)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


感谢您的回答。

我需要创建什么函数才能得到右侧这样的值? 20 -> 2 21 -> 3 22 -> 4 23 -> 5

此致

Symi: 我有一个关于for循环的练习。我需要在一个for循环中计算20到100的数字之和。

参加Go语言之旅。特别是流程控制语句部分。

你在纸笔计算中会使用什么函数来处理这种关系?我完全看不出这有什么意义……

对我来说,从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

Go Gopher Logo

https://go.dev/play/p/KU5QHvJznE1

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

代码说明:

  1. 外层循环遍历20到100的所有数字
  2. 内层循环通过取模运算%和整除运算/分解数字的各位数
  3. 每个数字的各位数之和累加到total变量
  4. 最终输出每个数字的分解结果和总和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 ->

抱歉我的英语不好,我正在学习。

回到顶部