go练习题
// 循环打印输入的月份的天数。 使用continue实现
// 要有判断输入的月份是否有错误的语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | func main() { var month, year int // 循环输入月份 for { fmt.Print( "Enter year (0 to exit): " ) fmt.Scan(&year) // 退出条件 if year == 0 { break } fmt.Print( "Enter month (1-12): " ) fmt.Scan(&month) // 判断月份是否合法 if month < 1 || month > 12 { fmt.Println( "Invalid month! Please enter a number between 1 and 12." ) continue // 如果输入无效,继续循环 } // 判断月份天数 days := 0 switch month { case 1, 3, 5, 7, 8, 10, 12: days = 31 case 4, 6, 9, 11: days = 30 case 2: // 判断是否是闰年 if (year%4 == 0 && year%100 != 0) || (year%400 == 0) { days = 29 } else { days = 28 } } // 输出结果 fmt.Printf( "Year %d, Month %d has %d days.\n" , year, month, days) } } |
//编写一个函数:
//随机猜数游戏:
//随机生成一个 1--100 的整数
//有十次机会
//如果第一次就猜中,提示“你真是个天才”如果第2--3 次猜中,提示“你很聪明,赶上我了”如果第 4--9 次猜中,提示“一般般”如果最后一次猜中,提示“可算猜对啦-次都没猜对,提示“说你点啥好呢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | func guessNumber() { // 随机生成一个 1 到 100 的整数 rand.Seed(time.Now().UnixNano()) // 设置随机种子 target := rand.Intn(100) + 1 // 生成 1 到 100 之间的随机数 var guess int var attempts int // 开始猜测 for attempts < 10 { attempts++ fmt.Print( "请输入你的猜测(1 到 100):" ) fmt.Scan(&guess) if guess == target { // 判断猜测次数并打印相应的提示 switch attempts { case 1: fmt.Println( "你真是个天才" ) case 2, 3: fmt.Println( "你很聪明,赶上我了" ) case 4, 5, 6, 7, 8, 9: fmt.Println( "一般般" ) case 10: fmt.Println( "可算猜对啦" ) } return // 猜中后退出 } else if guess < target { fmt.Println( "猜的数字太小了!" ) } else { fmt.Println( "猜的数字太大了!" ) } } // 如果 10 次都没猜中 fmt.Println( "说你点啥好呢" ) } func main() { guessNumber() } |
//编写一个函数:输出 100 以内的所有素数,每行显示5个;并求和
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | // 判断一个数是否是素数 func isPrime(n int) bool { if n <= 1 { return false } for i := 2; i*i <= n; i++ { if n%i == 0 { return false } } return true } // 输出素数并求和 func printPrimesAndSum() { count := 0 // 用来控制每行打印多少个素数 sum := 0 // 累加素数的和 // 遍历 1 到 100 之间的数 for i := 2; i <= 100; i++ { if isPrime(i) { // 如果是素数,打印该素数 fmt.Printf( "%d " , i) sum += i // 累加素数的和 count++ // 每行输出 5 个素数 if count%5 == 0 { fmt.Println() } } } // 输出所有素数的和 fmt.Printf( "\nSum of primes: %d\n" , sum) } func main() { printPrimesAndSum() } |
//编写一个函数,判断是打鱼还是晒网.
//中国有句俗语叫“三天打鱼两天晒网”。如果从1990年1月1日起开始执行“三天打鱼两天晒网”。如何判断在以后的某一天中是“打鱼”还是“晒网”?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // 判断某一天是“打鱼”还是“晒网” func fishOrNet(date time.Time) string { // 设置开始日期 1990年1月1日 startDate := time.Date(1990, 1, 1, 0, 0, 0, 0, time.UTC) // 计算从开始日期到目标日期的天数差 daysDifference := int(date.Sub(startDate).Hours() / 24) // 计算周期(5天周期) // 余数 0-2 为打鱼,余数 3-4 为晒网 if daysDifference%5 < 3 { return "打鱼" } else { return "晒网" } } func main() { // 输入日期 var inputDate string fmt.Print( "请输入日期 (格式: yyyy-mm-dd): " ) fmt.Scan(&inputDate) // 将输入的日期字符串转换为 time.Time 类型 date, err := time.Parse( "2006-01-02" , inputDate) if err != nil { fmt.Println( "日期格式错误,请重新输入!" ) return } // 判断并输出结果 result := fishOrNet(date) fmt.Printf( "在 %s 这一天是:%s\n" , inputDate, result) } |
输出小写的 a-z 以及大写的 Z一A,使用 for
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import "fmt" func main() { // 输出小写字母 a-z fmt.Println( "小写字母 a-z:" ) for i := 'a' ; i <= 'z' ; i++ { fmt.Printf( "%c " , i) // %c 用于打印字符 } fmt.Println() // 换行 // 输出大写字母 A-Z fmt.Println( "大写字母 A-Z:" ) for i := 'A' ; i <= 'Z' ; i++ { fmt.Printf( "%c " , i) } fmt.Println() // 换行 // 输出大写字母 Z 到 A-I fmt.Println( "大写字母 Z 到 A-I:" ) for i := 'Z' ; i >= 'I' ; i-- { fmt.Printf( "%c " , i) } fmt.Println() // 换行 } |
冒泡排序
func BubbleSort(arr []int) { n := len(arr) for i := 0; i < n-1; i++ { swapped := false for j := 0; j < n-1-i; j++ { if arr[j] > arr[j+1] { arr[j], arr[j+1] = arr[j+1], arr[j] swapped = true } } if !swapped { break } } } func main() { arr := []int{24, 69, 80, 57, 13, 10, 5, 42, 50} BubbleSort(arr) fmt.Println("排序后:", arr) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!