问题
编写一个程序,打印从1到100的数字。当是3的数就打印“Fizz” 代替数字,当是5的数就打印“Buzz”。当数字同时是三和5的倍数时,打印“FizzBuzz”。
思路
对1到100数字进行遍历,设置一个判断变量tmp(bool),在遍历数字中可以先判断其是否为3的倍数,结果为是则打印“Fizz”并对tmp赋值为true,再判断是否为5的倍数,结果为是则打印“Buzz”并对tmp赋值为true,最后判断tmp为真则打印数值否则不打印。
package main
import "fmt"
func main() {
const (
FIZZ = 3
BUZZ = 5
)
var p bool
for i := 1; i < 100; i++ {
p = false
if i%FIZZ == 0 {
fmt.Printf("Fizz")
p = true
}
if i%BUZZ == 0 {
fmt.Printf("Buzz")
p = true
}
if !p {
fmt.Printf("%v", i)
}
fmt.Println()
}
}
运行结果
以下为前20位运行结果
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
问题来源
《学习GO语言》pdf版