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)
}
复制代码

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2025-02-26 15:06  春分拂柳  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示