Go语言基础练习题系列2

1、练习1

生成一个随机数,让一个用户去猜这个数是多少?

代码示例如下:

package main

import (
    "fmt"
    "math/rand" //math包中的rand函数可以用来生成随机数
    "time"
)

func main() {
    var number int
    /*
        for i := 0;i < 10; i++ {
            number = rand.Intn(100)
            fmt.Printf("number:%d\n",number)
        }
        因为伪随机的存在,rand生成的随机数都有一个固定的序列,比如第一次生成1,第二次生成20等等,随机数的序列是固定,我们可以通过给其一个随机的总值,如果随机的总值不一样,那么伪随机数的序列也不一样。我们不给,他就是按照一个默认的随机总值,所以伪随机数序列永远是一样的。
    */
    rand.Seed(time.Now().UnixNano()) //通过rand函数的Seed方法,来设置总值,这里我们以当前时间来设置总值,并且用的纳秒,十分精确了
    number = rand.Intn(100)          //随机数的范围是0-100,但不包括100
    fmt.Printf("请猜一个数字,数字的范围是:[0-100)\n")
    for { //因为并不知道用户什么时候输入正确,所以是没有限制条件的,我们只能做一个死循环,配合switch语句满足条件了即可退出;
        var input int
        fmt.Scanf("%d\n", &input) //Scanf表示让用户输入,Scanf从终端读取一个整数,并传值给input变量,&表示获取到该变量内存地址
        var flag bool = false     //通过设置flag变量,解决的是用户输入正确后可以退出
        switch {
        case number > input:
            fmt.Printf("您输入的数字太小\n")
        case number == input:
            fmt.Printf("恭喜您,答对了!\n")
            flag = true
        case number < input:
            fmt.Printf("您输入的数字太大\n")
        }
        if flag { //表示如果flag为真,则break退出这个for循环
            break
        }
    }
}

执行结果如下:

补充:

Scanf那里一定要加上\n,因为加上的话就已经表示以回车换行符为止,这样就已经保证了能够获取到用户输入的真正的数字,你如果不加\n,他就不行了,就会识别2次一个是你输入的数字,一个是回车。

猜你喜欢

转载自www.cnblogs.com/zhangzhifan1208/p/9338157.html