练习 - 在 Go 中使用控制流

已完成

通过完成一些编码练习,练习你在此模块中了解的内容。 这些练习并不复杂,你会在下一个单元中找到解决方案。

请首先尝试自行完成练习。 然后,将你的结果与解决方案进行比较。 如果忘记了重要的详细信息,你始终可以查看该模块。

编写 FizzBuzz 程序

首先,编写一个用于输出数字(1 到 100)的程序,其中有以下变化:

  • 如果数字可被 3 整除,则输出 Fizz
  • 如果数字可被 5 整除,则输出 Buzz
  • 如果数字可同时被 3 和 5 整除,则输出 FizzBuzz
  • 如果前面的情况都不符合,则输出该数字。

尝试使用 switch 语句。

查找质数

编写一个程序来查找小于 20 的所有质数。 质数是大于 1 的任意数字,只能被它自己和 1 整除。 “整除”表示经过除法运算后没有余数。 与大多数编程语言一样,Go 还提供了一种方法来检查除法运算是否产生余数。 我们可以使用模数 %(百分号)运算符。

在本练习中,你将更新一个名为 findprimes 的函数,以检查数值是否为质数。 该函数有一个整数参数,并返回一个布尔值。 函数通过检查是否有余数来测试输入数字是否为质数。 如果数字为质数,则该函数返回 true。

使用以下代码片段作为起点,并使用正确的语法替换 ?? 的所有实例:

package main

import "fmt"

func findprimes(number int) bool {
	for i := 2; i ?? number; i ?? {
        if number ?? i == ?? {
			return false
        }
    }

	if number ?? {
		return true
	} else {
	    return false
	}
}

func main() {
    fmt.Println("Prime numbers less than 20:")

    for number := ??; number ?? 20; number++ {
        if ?? {
            fmt.Printf("%v ", number)
        }
    }
}

此程序检查 1 到 20 的数字,如果数字为质数,则打印它。 按说明修改示例。

  • main 函数中,遍历要检查的所有数字。 在检查完最后一个数字后退出循环。
  • 调用 findprimes 函数以检查数字。 如果函数返回 true,则打印质数。
  • findprimes 循环中,从 2 开始并重复,直到计数器的值大于或等于 number 值。
  • 检查 number 是否可被当前计数器值整除。 如果是,则退出循环。
  • 如果 number 为质数,则返回 true;否则返回 false。
  • 提示:请务必正确处理输入数字为 1 的情况。

要求用户输入一个数字,如果该数字为负数,则进入紧急状态

编写一个要求用户输入一个数字的程序。 在开始时使用以下代码片段:

package main

import "fmt"

func main() {
    val := 0
    fmt.Print("Enter number: ")
    fmt.Scanf("%d", &val)
    fmt.Println("You entered:", val)
}

此程序要求用户输入一个数字,然后将其输出。 修改示例代码,使之符合以下要求:

  • 持续要求用户输入一个整数。 此循环的退出条件应该是用户输入了一个负数。
  • 当用户输入负数时,让程序崩溃。 然后输出堆栈跟踪错误。
  • 如果数字为 0,则输出“0 is neither negative nor positive”。 继续要求用户输入数字。
  • 如果数字为正数,则输出“You entered: X”(其中的 X 为输入的数字)。 继续要求用户输入数字。

现在,请忽略用户输入的内容可能不是整数这种可能性。