sevfox 发表于 2020-4-20 21:07

【笔记】7个GO语言经典实例

1.九九乘法表

```
package main

import "fmt"

func main() {
        for i := 1; i <= 9; i++ {
                for j := 1; j <= i; j++ {
                        fmt.Printf("%d * %d = %d\t", j, i, j*i)
                }
                fmt.Println()
        }
}

```
2.求100~999内的水仙花数?(水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153)

```
package main

import (
        "fmt"
        "math"
)

func main() {
        for num := 100; num <= 999; num++ {
                var i = num / 100        //百位
                var j = num / 10 % 10        //十位
                var k = num % 10        //个位
                if math.Pow(float64(i), 3)+math.Pow(float64(j), 3)+math.Pow(float64(k), 3) == float64(num) {
                        fmt.Println(num)
                }
        }
}
```

3.打印等腰三角形
```
package main

import "fmt"

func main() {
        var line int = 10 //行数
        for i := 0; i < line; i++ {
                for j := 0; j < line-i-1; j++ {
                        fmt.Print(" ")
                }
                for k := 0; k < i*2+1; k++ {
                        fmt.Print("*")
                }
                fmt.Println()
        }
}
```
4.斐波那契数列(Fibonacci sequence),又称黄金分割数列、指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
```
package main

import "fmt"

const NUM = 10 //多少位

func fibonacci(n int) int {
        if n < 2 {
                return n
        }
        return fibonacci(n-2) + fibonacci(n-1)
}

func main() {
        var i int
        for i = 0; i < NUM; i++ {
                fmt.Printf("%d\t", fibonacci(i))
        }
}
```
5.阶乘。一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
```

package main

import "fmt"

func Factorial(n uint64) (result uint64) {
        if (n > 0) {
                result = n * Factorial(n-1)
                return result
        }
        return 1
}

func main() {
        var i int = 5
        fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64(i)))
}
```
6.统计输入字符个数
```
package main

import "fmt"

func main() {
        var str string
        fmt.Scan(&str)
        slice := []byte(str)
        m := make(mapint)
        for i := 0; i < len(slice); i++ {
                m]++
        }
        for k, v := range m {
                fmt.Printf("%c:%d\n", k, v)
        }
}
```
7.百钱百鸡? (我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?)
```
package main

import (
        "fmt"
)

func main() {
        //共买100只,所以cock(鸡翁)最多20只,hen(鸡母)最多33只,chicken(鸡雏)最多100只
        for cock := 0; cock < 20; cock++ {
                for hen := 0; hen < 33; hen++ {
                        for chicken := 0; chicken <= 100; chicken += 3 {
                                if (5*cock+3*hen+chicken/3 == 100 && cock+hen+chicken == 100) {
                                        fmt.Printf("鸡翁%d只,鸡母%d只,小鸡%d只\n", cock, hen, chicken)
                                }
                        }
                }
        }
}
```

cry323 发表于 2020-4-20 22:11

有点看不懂

sevfox 发表于 2020-4-24 17:20

Ah.Dragon 发表于 2020-4-22 15:12
其它的我都看都了,%d、%c是什么

%c输出单个字符
%d输出十进制整数
%f输出十进制浮点数
%o输出八进制数
%s输出字符串
%u输出无符号十进制数
%x输出十六进制数。
这是printf格式化输出的占位符
可以参考https://blog.csdn.net/qq_34777600/article/details/81266453

初音ミク 发表于 2020-4-20 21:37

地鼠yes {:301_988:}

aj2002214 发表于 2020-4-20 21:44

这些不都是教程上要的代码吗。。。。。学的时候感觉有些难度啊

斩风 发表于 2020-4-20 21:49

感谢分享

彭哥列第十代 发表于 2020-4-20 22:19

课本代码?

陆小果emotion 发表于 2020-4-20 22:34

这啥意思?

KID丶 发表于 2020-4-20 23:08

听得黑马的教程感觉都有   不错不错

Ah.Dragon 发表于 2020-4-22 15:12

其它的我都看都了,%d、%c是什么
页: [1] 2
查看完整版本: 【笔记】7个GO语言经典实例