1.99乘法口诀
2.猜数字
3.猜数字(加强版)
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
//1.乘法口诀
for i := 1; i <= 9; i++ {
for j := 1; j <= 9; j++ {
if j > i {
break
}
fmt.Printf("%v*%v=%v\t", i, j, i*j)
}
fmt.Println()
}
for i := 1; i <= 9; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%v*%v=%v\t", i, j, i*j)
}
fmt.Println()
}
//2.猜数字
/*随机生成一个数字让用户猜
用户猜的比生成的大 提是菜大了 并且提是还有几次机会
用户猜的比生成的小 提是菜小了 并且提是还有几次机会
用户猜对了 提是very goot
最多5次机会 都错了提是太笨了
*/
//设置随机数种子
//goto解法
rand.Seed(time.Now().Unix())
var num int
num = rand.Intn(100)
END:
for i := 1; i <= 6; i++ {
if i == 6 {
fmt.Println("5次都猜不对真笨")
break
}
var user int
fmt.Printf("请输入数字:")
fmt.Scan(&user)
switch {
case user < num:
fmt.Printf("太小了,还有%d次机会\n", 5-i)
case user > num:
fmt.Printf("太大了,还有%d次机会\n", 5-i)
default:
fmt.Println("猜对了,猜了%d次就猜对了\n", i)
break END
}
}
//第二种解法
rand.Seed(time.Now().Unix())
var (
num int
user int
)
num = rand.Intn(100)
var max int = 5
for i := 1; i <= max; i++ {
fmt.Print("请输入数字")
fmt.Scan(&user)
if user == num {
fmt.Printf("太聪明了,第%d就猜对了\n", i)
break
} else if user < num {
fmt.Printf("小了,还有%d次机会\n", max-i)
} else {
fmt.Printf("大了了,还有%d次机会\n", max-i)
}
if i == max {
fmt.Println("太笨了")
break
}
}
//第三种解法
rand.Seed(time.Now().Unix())
var (
num int
user int
isOk bool = false
)
num = rand.Intn(100)
var max int = 5
for i := 1; i <= max; i++ {
fmt.Print("请输入数字:")
fmt.Scan(&user)
if user == num {
fmt.Printf("太聪明了,第%d就猜对了\n", i)
isOk = true
break
} else if user < num {
fmt.Printf("小了,还有%d次机会\n", max-i)
} else {
fmt.Printf("大了了,还有%d次机会\n", max-i)
}
}
if !isOk {
fmt.Println("太笨了")
}
//3.如果5次都没有猜中,提是太笨了 ,重新开始猜数字游戏 重新生成随机数 重新开始5次计数
//第一种解法
START:
rand.Seed(time.Now().Unix())
var (
num int
user int
)
num = rand.Intn(100)
END:
for i := 1; i <= 5; i++ {
fmt.Printf("请输入数字:")
fmt.Scan(&user)
switch {
case user < num:
fmt.Printf("太小了,还有%d次机会\n", 5-i)
case user > num:
fmt.Printf("太大了,还有%d次机会\n", 5-i)
default:
fmt.Println("猜对了,猜了%d次就猜对了\n", i)
break END
}
if i == 5 {
var restart string
fmt.Printf("是否重新开始猜数Y/N:")
fmt.Scan(&restart)
if restart == "Y" || restart == "y" {
goto START
}
}
}
//第二种解法
rand.Seed(time.Now().Unix())
var (
num int
user int
restart string
)
num = rand.Intn(100)
var max int = 5
for {
for i := 1; i <= max; i++ {
fmt.Print("请输入数字")
fmt.Scan(&user)
if user == num {
fmt.Printf("太聪明了,第%d就猜对了\n", i)
break
} else if user < num {
fmt.Printf("小了,还有%d次机会\n", max-i)
} else {
fmt.Printf("大了了,还有%d次机会\n", max-i)
}
if i == max {
fmt.Println("太笨了")
}
}
fmt.Printf("是否继续Y/N:")
fmt.Scan(&restart)
if restart == "n" || restart == "N" {
break
}
}
//第三种解法
rand.Seed(time.Now().Unix())
var (
num int
user int
isOk bool = false
restart string
)
num = rand.Intn(100)
var max int = 5
for {
for i := 1; i <= max; i++ {
fmt.Print("请输入数字:")
fmt.Scan(&user)
if user == num {
fmt.Printf("太聪明了,第%d就猜对了\n", i)
isOk = true
break
} else if user < num {
fmt.Printf("小了,还有%d次机会\n", max-i)
} else {
fmt.Printf("大了了,还有%d次机会\n", max-i)
}
}
if !isOk {
fmt.Println("太笨了")
}
fmt.Printf("是否继续Y/N:")
fmt.Scan(&restart)
if restart == "n" || restart == "N" {
break
}
}
}
//总结
/*
1.随机数种子 在程序初始化只用初始化一次
2.清楚了解代码执行逻辑,删除荣誉
3.注意变量定义位置
4.注意代码格式(缩进与对其)
5.注意对不同分支中的相同逻辑代码进行合并
6.尝试fmt.Printlb(),fmt.Print(""),fmt.Print(" "),fmt.Println("\n"),fmt.Print("\n")的区别
7.掌握fmt.Printf()对齐方式
8.代码要做减法,用最清晰的逻辑实现代码功能
*/