[GO小题-golang学习记录]Fizz-Buzz问题

557 阅读1分钟

问题

编写一个程序,打印从1到100的数字。当是3的数就打印“Fizz” 代替数字,当是5的数就打印“Buzz”。当数字同时是三和5的倍数时,打印“FizzBuzz”。

思路

对1到100数字进行遍历,设置一个判断变量tmpbool),在遍历数字中可以先判断其是否为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版