流程控制练习之盲猜随机数

程序需求

系统随机生成一个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
		}
	}
}

程序执行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值