区块链学习-golang循环/条件

2018-01-13 17:44:50
package main

import "fmt"

func main() {  
    firstHomeork()
    secondHomework()
    thirdHomework()
    forthHomework()
    fifthHomework()
    sixthHomework()
    seventhHomework()
    eighthHomework()
    ninthHomework()
}

// 1.计算1到100x相加的和
func firstHomeork() {  
    amount := 0
    for i := 1; i <= 100; i++ {
        amount += i
    }
    fmt.Println("1~100相加的和为:", amount)
}

// 2.显示1到100的数,每行显示五个
func secondHomework() {  
    for i := 1; i <= 100; i++ {
        fmt.Print(i, " ")
        if i != 0 && i%5 == 0 {
            fmt.Println()
        }
    }
}

// 3.显示三位数中可以被8整除的数,每行显示8个
func thirdHomework() {  
    count := 0
    for i := 100; i < 1000; i++ {
        if i%8 == 0 {
            fmt.Print(i, " ")
            count++
            // 每八个数换行
            if count != 0 && count%8 == 0 {
                fmt.Println()
            }
        }
    }
}

// 4.计算从1累加到和为3003时的次数
func forthHomework() {  
    i := 1
    amount := 0
    for {
        amount += i
        if amount == 3003 {
            break
        }
        i++
    }
    fmt.Println("累加次数为:", i)
}

// 5.使用for循环语句计算8+88+888+...前十项之和
func fifthHomework() {  
    count := 0
    amount := 0
    for i := 0; i < 10; i++ {
        count = count*10 + 8
        amount += count
    }
    fmt.Println("8+88+888...十项的和为:", amount)
}

// 6.水仙花数
func sixthHomework() {  
    for i := 100; i <= 999; i++ {
        x := i / 100
        y := i % 100 / 10
        z := i % 10
        if (x*x*x + y*y*y + z*z*z) == i {
            fmt.Println("水仙花数:", i)
        }
    }
}

// 7.打印乘法口诀
func seventhHomework() {  
    for i := 1; i <= 9; i++ {
        for j := 1; j <= i; j++ {
            fmt.Print(i, "X", j, "=", i*j, " ")
        }
        fmt.Println()
    }
}

// 8.求1~999所有质数的和
func eighthHomework() {  
    amount := 0
    for i := 1; i <= 999; i++ {
        for j := 1; j <= i; j++ {
            if i%j == 0 && j != 1 && j != i {
                amount += i
            }
        }
    }
    fmt.Println("1~999所有质数的和为:", amount)
}

// 9.三个变量不需要中间变量,如何交换
// a、b、c 交换后 a=b b=c c=a
func ninthHomework() {  
    var a, b, c int = 5, 2, 8
    fmt.Printf("交换前:a= %d ,b= %d ,c= %d \n", a, b, c)
    // a<->b
    a = a + b
    b = a - b // a+b-b = a
    a = a - b // a+b-a = b
    // a=b b=a
    // b<->c
    b = b + c // a+c
    c = b - c // a+c-c = a
    b = b - c // a+c-c = a+c-a = c

    fmt.Printf("交换后:a= %d ,b= %d ,c= %d \n", a, b, c)
}
区块链学习-进制、GO运算符

进制 int 与 uint 区别 int 表示有符号整数 uint 表示无符号整数 int8 -128~127 int16 -2^8~2^8 ... uint8 0~255 uint16 0~2^16 ... 十进制转二进制 1. 正整数转二进制 正整数使用二除法,得到的结果倒叙即为该十位数的二进制数 2. 负数转二进制 先得到正数对应的二进制数,然后取反,再加一即为该负数的二进制数 3. 小数转二进制 整数部分+小数点+小数部分 整数部分:按照前面的步骤正常转换 小数部分:小数部分乘2,得到结果的整数部分n,若小数部分不为零,继续上面的步骤。最后得到的n的排列即为小数部分 二进制转十进制 1. 正二进制数

区块链学习-golang数组、map、函数、类

数组/切片 数组声明: 普通声明: var arr = [5]int{} // 长度固定为5,不可扩展,{}中为初始值,默认为0 arr := [5]string{"a", "b", "c", "d"} var arr [5]int // [0, 0, 0, 0] make关键字声明数组切片: var arr = make([], 2, 4) // 长度 len(arr) 为2,容量 cap(arr) 为4,长度决定存储量,容量不够时翻倍 arr := make([], 1, 1) arr = append(arr,