[toc]
编程案例
多重循环控制-for
编写一个程序,可以接收一个整数,表示层数,打印出金字塔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| package main import "fmt" func main() {
for i := 1; i <= 3; i++ { for j := 1; j <= 3; j++ { fmt.Print("*") } fmt.Println("") }
}
|

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package main import "fmt"
func main() { for i := 1; i <= 3; i++ { for j := 1; j <= i; j++ { fmt.Print("*") } fmt.Println("") } }
|

但是这个每层的*数目不对
应该是第一层一个,第二层三个,第三层五个,第n层2n-1个。
所以
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package main import "fmt"
func main() { for i := 1; i <= 3; i++ { for j := 1; j <= 2*i-1; j++ { fmt.Print("*") } fmt.Println("") } }
|

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
| package main import "fmt"
func main() { for i := 1; i <= 3; i++ { for k:= 1; k <= 3 - i;k++{ fmt.Print(" ") } for j := 1; j <= 2*i-1; j++ { fmt.Print("*") } fmt.Println("") } }
|

再修改题目,将层数改成一个变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main
import "fmt"
var totalLevel int = 9
func main() { for i := 1; i <= totalLevel; i++ { for k := 1; k <= totalLevel-i; k++ { fmt.Print(" ") } for j := 1; j <= 2*i-1; j++ { fmt.Print("*") } fmt.Println("") } }
|

在修改题目,打印空心金字塔
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package main
import "fmt"
var totalLevel int = 9
func main() { for i := 1; i <= totalLevel; i++ { for k := 1; k <= totalLevel-i; k++ { fmt.Print(" ") } for j := 1; j <= 2*i-1; j++ { if j == 1 || j == 2*i-1 { fmt.Print("*") } else { fmt.Print(" ") } } fmt.Println("") } }
|

但是这个打印到最后没封底就很不美观,所以要封底。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package main
import "fmt"
var totalLevel int = 9
func main() { for i := 1; i <= totalLevel; i++ { for k := 1; k <= totalLevel-i; k++ { fmt.Print(" ") } for j := 1; j <= 2*i-1; j++ { if j == 1 || j == 2*i-1 || i == totalLevel { fmt.Print("*") } else { fmt.Print(" ") } } fmt.Println("") } }
|

打印九九乘法表
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package main
import "fmt"
func main() { for i := 1; i <= 9; i++ { for j := 1; j <= i; j++ { fmt.Printf("%v * %v = %v \t", j, i, j*i) } fmt.Println("") } }
|
