go基础(二) for循环

2018-11-17  本文已影响0人  宋song一

一.逻辑运算符(唯一)

&&,短路与
||,短路或
!,非
逻辑与&&运算优先级高于逻辑或||

二.for循环嵌套

1.百钱百鸡

package main

import (
    "fmt"
)

func main() {
    count:=0
    chicken:=0
    for cock:=0;cock<=20 ;cock++  {
        for hen:=0;hen<=33 ;hen++  {
            chicken=100-cock-hen
            count++
            if  chicken%3==0 && cock*5+hen*3+chicken/3==100{
                fmt.Printf("公鸡: %d 母鸡: %d 小鸡: %d",cock,hen,chicken)
                        fmt.Println()
            }
            //for chicken:=0;chicken<=100 ;chicken+=3  {
            //  count++
            //  if  cock+hen+chicken==100 && cock*5+hen*3+chicken/3==100{
            //      fmt.Printf("公鸡 %d 母鸡 %d 小鸡 %d",cock,hen,chicken)
            //      fmt.Println()
            //  }
            //}
        }
    }
    fmt.Println(count)
}

优化后的代码执行次数:714次
注释的代码为优化前,执行次数:24276次
结果为:
公鸡: 0 母鸡: 25 小鸡: 75
公鸡: 4 母鸡: 18 小鸡: 78
公鸡: 8 母鸡: 11 小鸡: 81
公鸡: 12 母鸡: 4 小鸡: 84

2.水仙花数

package main

import "fmt"

func main() {
    for i := 100; i < 1000; i++ {
        unit := i % 10
        decade := i % 100 / 10
        hundreds := i / 100
        if unit*unit*unit+decade*decade*decade+hundreds*hundreds*hundreds == i {
            fmt.Println(i)
        }
    }

结果为:
153
370
371
407

3.乘法表

import "fmt"

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

结果:

1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

4.倒直角三角形

package main

import "fmt"

func main() {
    for i:=0;i<5 ;i++  {
        for j:=0;j<5-i ;j++  {     //或 for j:=5-i;j>0 ;j--  {  //或 for j := 5; j >i; j--{
            fmt.Print("*")
        }
        fmt.Println()
    }
}

结果:

*****
****
***
**
*

5.直角三角形

import "fmt"

func main() {
    for i:=0;i<5 ;i++  {
        for j:=0;j<i ;j++  {    
            fmt.Print("*")
        }
        fmt.Println()
    }
}

结果

*
**
***
****
*****

6.等边三角形

import "fmt"

func main() {
    for i := 1; i < 6; i++ {

        for j := 0; j < 6-i; j++ {

                fmt.Print(" ")
            }
            for l := 0; l <i; l++ {
                fmt.Print("* ")
            }
            fmt.Println();
        }
    }

结果

     * 
    * * 
   * * * 
  * * * * 
 * * * * * 

三 for循环格式

  1. 一般格式
    for init;condition;post{}
    2.条件判断式
    for condition{}
    3.无限循环式 ,相当于java的while(true){}
    for {;}
    4.range格式,一般用于迭代循环(遍历).有两个返回值
    for key,value:=range Map{}

for嵌套循环外层的跳出可使用break label(label可定义在需要跳出的地方)

上一篇下一篇

猜你喜欢

热点阅读