美文网首页GO语言系列
GO语言学习初级之代码案例01

GO语言学习初级之代码案例01

作者: 大爬虫Shalom | 来源:发表于2018-07-15 20:46 被阅读27次

@(go语言 黑马)[GO语言]

判断是否为闰年

  • 题目:手动输入一个年份,判断出该年份是否为闰年
  • 代码如下:逻辑思路在注释中
package main

import "fmt"

//手动输入一个年份,判断出该年份是否为闰年
func main() {
    var a int
    fmt.Scan(&a) //输入一个年份
    var b bool   //b为true则为闰年 false不是闰年

    //能被400整除的为闰年,能被4整除,同时不被100整除的为闰年;代码实现如下:
    //(a%400==0) || (a%4==0 && a%100!=0);|| 或语句

    if a%400 == 0 {
        b = true
    } else if a%100 != 0 && a%4 == 0 {
        b = true
    } else {
        b = false
    }
    fmt.Println(b)
}

循环验证密码

  • 题目:提示用户输入密码,如果密码输入错误,则给出提示,并让用户再次输入,直到密码输入正确为止

  • 代码如下:逻辑思路在注释中

package main

import "fmt"

//提示用户输入密码,如果密码输入错误,则给出提示,并让用户再次输入,直到密码输入正确为止

func main() {
    var password string //密码为字符串类型变量
    fmt.Println("请输入密码:")

IMPROT:
    fmt.Scan(&password)
    if password == "xhl1995" { //这里设置的密码为"xhl1995",你也可以设置任意密码
        fmt.Println("登陆成功!")
    } else {
        fmt.Println("密码输入错误!请再次输入:")
        goto IMPROT //goto 返回到IMPROT标记位置,继续执行代码
        //这里goto就实现了循环输入密码的功能
    }
}

月份天数查询

  • 题目:输入想要查询的年份和月份,便可查询到该年该月的天数

  • 代码如下:这里使用的是switch实现的,逻辑思路在注释中

package main

import "fmt"

//输入想要查询的年份和月份,便可查询到该年该月的天数

func main() {
    var year int
    var month int
    var day int
    
    //手动输入年月:
    fmt.Println("请输入年份:")
    fmt.Scan(&year)
    fmt.Println("请输入月份:")
    fmt.Scan(&month)

    //月份天数一共有三种情况:30天,31天,2月29天,闰年的2月28天,所以这里使用switch要方便些
    if month > 0 && month <= 12 {
        switch month {
        case 1:
            fallthrough
            //fallthrough表示不跳出循环,并执行下一层代码,
            // 不加fallthrough则只执行本层,因为里面内置break函数
        case 3:
            fallthrough
        case 5:
            fallthrough
        case 7:
            fallthrough
        case 8:
            fallthrough
        case 10:
            fallthrough
        case 12:
            day = 31//1,3,5,7,8,10,12月份都为31天
        case 2:
            //判断是否为闰年
            if year%400 == 0 {
                day = 29
            } else if year%4 == 0 && year%100 != 0 {
                day = 29
            } else {
                day = 28
            }
        default://default代表其余的意思
            day = 30
        }
        fmt.Printf("%d年%d月有%d天", year, month, day)
    } else {
        fmt.Println("月份输入错误!")
    }
}

利用GO语言解决一道数学题

  • 题目:某校2006年有80000名学生,往后每年增加25%,问:哪年人数能够达到20万

  • 代码如下:这里使用的是switch实现的,逻辑思路在注释中

package main

import "fmt"

//某校2006年有80000名学生,往后每年增加25%,问:哪年人数能够达到20万

func main() {
//利用for循环解决实际问题,不要将要输出的变量当做循环条件
    var year = 2006
    for amount := 80000.0; amount < 200000; amount *= 1.25 { //当人数达到20万,则停止循环
        year++
    }
    fmt.Printf("%d年学员人数达到20万", year)
}

百钱百鸡

  • 题目:公鸡价格5钱,母鸡价格为3钱,1钱可以买3只小鸡,问:如何用100钱买到一百只鸡?

  • 代码如下:这里使用的是switch实现的,逻辑思路在注释中

package main

import "fmt"

//公鸡价格5钱,母鸡价格为3钱,1钱可以买3只小鸡,问:如何用100钱买到一百只鸡?

func main() {
    chicken := 0
    a := 0 //记录运行次数
    for cock := 0; cock <= 20; cock++ {//最多只能买20只公鸡
        for hen := 0; hen <= 33; hen++ {//最多只能买33只母鸡
            for chicken := 0; chicken <= 100; chicken += 3 {//最多不能超过100只鸡
                if cock+hen+chicken == 100 && cock*5+hen*3+chicken/3 == 100 {//满足:钱数100,鸡数100
                fmt.Printf("公鸡:%d 母鸡:%d 小鸡:%d\n", cock, hen, chicken)
                }
            a++//每循环一次,a加1
            }
        }
    }
    fmt.Println("运行次数:", a)
}
  • 改程序还可以优化,使程序运行次数大大减少:
package main

import "fmt"

//公鸡价格5钱,母鸡价格为3钱,1钱可以买3只小鸡,问:如何用100钱买到一百只鸡?

func main() {
    chicken := 0
    a := 0 //记录运行次数
    for cock := 0; cock <= 20; cock++ {
        for hen := 0; hen <= 33; hen++ {
            chicken = 100 - cock - hen//减少chicken的循环
            if cock*5+hen*3+chicken/3 == 100 && chicken%3 == 0 {
                fmt.Printf("公鸡:%d 母鸡:%d 小鸡:%d\n", cock, hen, chicken)
            }
            a++
        }
    }
    fmt.Println("运行次数:", a)
}

相关文章

网友评论

    本文标题:GO语言学习初级之代码案例01

    本文链接:https://www.haomeiwen.com/subject/ybqmpftx.html