需求:孩子做题需要我出题,我不想出。
为什么不用我熟悉的java,go可以直接生成exe文件。
Windows执行程序链接
set_quest.exe
https://www.aliyundrive.com/s/yP3GuhTZoGD
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
一、代码实现
package mainimport ("fmt""math/rand""time"
)func main() {var count, num1, num2, num3, num4 intfmt.Println("请输入出题数字的最大值:")fmt.Scanln(&num1)fmt.Println("请输入答案的最大值:")fmt.Scanln(&num2)fmt.Println("请输入需要出题的数量:")fmt.Scanln(&num3)fmt.Println("请输入需要每行显示的数量:")fmt.Scanln(&num4)var sets Set = NewSet()for true {tem1 := getRandomWithAll(1, num1)tem2 := getRandomWithAll(1, num1)temStr := string(tem1) + string(tem2)if sets.Contains(temStr) {continue} else {sets.Add(temStr)}if tem1 > tem2 {oper := getRandomWithAll(0, 1)if oper == 0 {if tem1-tem2 <= int64(num2) {fmt.Printf("%d-%d=\t\t", tem1, tem2)count = calCount(count, num4)}} else {if tem1+tem2 <= int64(num2) {fmt.Printf("%d+%d=\t\t", tem1, tem2)count++if count%num4 == 0 {fmt.Println()}}}} else if tem1 < tem2 {if tem1+tem2 <= int64(num2) {fmt.Printf("%d+%d=\t\t", tem1, tem2)count++if count%num4 == 0 {fmt.Println()}}}if count >= num3 {break}}fmt.Println("\n请输入任意数字退出:")fmt.Scanln(&count)}func calCount(count int, num4 int) int {count++if count%num4 == 0 {fmt.Println()}return count
}func getRandomWithAll(min, max int) int64 {rand.Seed(time.Now().UnixNano())return int64(rand.Intn(max-min+1) + min)
}type Set struct {m map[string]bool
}func NewSet() Set {m := make(map[string]bool)return Set{m: m}
}func (s *Set) Contains(val string) bool {_, ok := s.m[val]return ok
}func (s *Set) Add(val string) {s.m[val] = true
}func (s *Set) Remove(val string) {delete(s.m, val)
}
二、测试
三、打包成exe
go build .\set_quest.go