程序需求
系统随机生成一个0-100的整数,当用户输入随机数时,如果大于随机数则提示”猜大了,您还有多少次机会“,小于随机数时提示”猜小了,您还有多少次机会“,等于随机数时提示”猜中了!!“,并询问用户是否重新开始游戏。用户最多针对一个随机数进行5次的猜测。如果5次都没有中则提示用户是否重新开始游戏。
程序代码:(if判断)
以下是第一种实现方式,通过if判断条件
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 初始化相关变量
const NUMBER int = 5
var intput, suijishu int
// 初始化随机数种子,并生成0-100的随机数
rand.Seed(time.Now().Unix())
// 死循环,直到用户确定退出游戏
for {
// 生成随机数
suijishu = rand.Intn(100)
for i := 1; i <= NUMBER; i++ {
// 获取用户输入
fmt.Printf("请输入您的随机数:")
fmt.Scan(&intput)
// 主判断流程
if intput == suijishu {
fmt.Println("猜对了!!!")
break
} else if intput > suijishu {
fmt.Printf("猜大了!!,你还有%d次机会\n", NUMBER-i)
} else {
fmt.Printf("猜小了!!,你还有%d次机会\n", NUMBER-i)
}
// 判断是否为最后一次机会
if i == NUMBER {
fmt.Println("太笨了!!5次机会都猜错。")
}
}
// 获取用户输入,是否重新开始游戏
var yes string
fmt.Printf("是否重新开始游戏?(y/n)")
fmt.Scan(&yes)
// 当用户输入n时,退出死循环
if yes != "y" {
break
}
}
}
程序执行结果
程序代码:(switch判断)
以下是第一种实现方式,通过switch判断条件。需要注意一点:由于switch语句中的break是跳出它自己的判断,并不能直接跳出整个for循环。因此我们在判断用户猜中后需要结合标签,使用goto跳出循环。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 初始化变量
var intput, suijishu int
const NUMBER int = 5
// 初始化随机数种子
rand.Seed(time.Now().Unix())
for {
suijishu = rand.Intn(100)
for i := 1; i <= NUMBER; i++ {
fmt.Print("请输入您的随机数:")
fmt.Scan(&intput)
switch {
case intput == suijishu:
fmt.Println("猜中了!!!")
// 跳出循环
goto END
case intput > suijishu:
fmt.Printf("猜大了,您还有%d次机会\n", NUMBER-i)
default:
fmt.Printf("猜小了,您还有%d次机会\n", NUMBER-i)
}
// 判断是否为最后一次机会
switch i {
case NUMBER:
fmt.Println("太笨了,5次机会都猜错了!")
}
}
END:
var yes string
fmt.Printf("是否重新开始游戏?(y/n)")
fmt.Scan(&yes)
if yes != "y" {
break
}
}
}