go练习题
// 循环打印输入的月份的天数。 使用continue实现
// 要有判断输入的月份是否有错误的语句
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 次猜中,提示“一般般”如果最后一次猜中,提示“可算猜对啦-次都没猜对,提示“说你点啥好呢
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个;并求和
// 判断一个数是否是素数
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日起开始执行“三天打鱼两天晒网”。如何判断在以后的某一天中是“打鱼”还是“晒网”?
// 判断某一天是“打鱼”还是“晒网”
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
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) }

浙公网安备 33010602011771号