go语言实现加减法出题器(再也不用担心孩子学习了)

该文章介绍了一个用Go编写的程序,可以生成基于用户指定条件的数学题(加减法),并能打包成Windows可执行文件(exe)。用户输入最大值、答案范围和题目数量,程序将随机出题,并按行列布局显示。最后,文章还提供了打包成exe的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 需求:孩子做题需要我出题,我不想出。

为什么不用我熟悉的java,go可以直接生成exe文件。

Windows执行程序链接

set_quest.exe
https://www.aliyundrive.com/s/yP3GuhTZoGD
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

一、代码实现

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	var count, num1, num2, num3, num4 int
	fmt.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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值