1 打印左对齐金字塔
示例:
*
**
***
func pyramid_left(layers int) {
for i := 1; i <= layers; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("*")
}
fmt.Println()
}
}
2 打印居中金字塔
*
***
*****
分析:第1层左边2空格,第2层左边1空格,因此左边空格数 = 总层数 - 当前层
第1层*
有1个,第2层3个,第3层5个,因此*
个数 = 2 * 当前层 - 1
func pyramid_middle(layers int) {
for i := 1; i <= layers; i++ {
for j := layers - i; j > 0; j-- {
fmt.Printf(" ")
}
for j := 1; j <= 2*i-1; j++ {
fmt.Printf("*")
}
fmt.Println()
}
}
3 打印空心金字塔
*
* *
* *
*******
分析:第1层左边3空格,第2层左边2空格,因此左边空格数 = 总层数 - 当前层
第2层中间1空格,第3层中间3空格,因此中间空格数 = 2 *
(当前层 - 1) - 1
由于除了第1层和最后一层,其他层都只有2个*
,因此在 1.2 的基础上添加需要打印*
的判断
注意:第1层和最后1层的*需要全部打印
func pyramid_hollow(layers int) {
//i表示当前层
for i := 1; i <= layers; i++ {
//先打印左边的空格数
for j := layers - i; j > 0; j-- {
fmt.Printf(" ")
}
//j表示当前层数需要打印的字符
for j := 1; j <= 2*i-1; j++ {
if j == 1 || j == 2*i-1 || i == layers {
fmt.Printf("*")
} else {
fmt.Printf(" ")
}
}
fmt.Println()
}
}
4 九九乘法表
1 1
2 2 4
3 3 6 9
1 2 3
func multi_table(layers int) {
for i := 1; i <= layers+1; i++ {
//最后一行直接打印1、2、3、...
if i == layers+1 {
for j := 1; j <= layers; j++ {
fmt.Printf("\t%d", j)
}
} else {
//其他行,先打印当前行数,再打印乘积
fmt.Printf("%d", i)
for j := 1; j <= i; j++ {
fmt.Printf("\t%d", i*j)
}
}
fmt.Println()
}
}
5 打印阶梯
♡
▇▇
▇▇▇
▇▇▇▇
▇▇▇▇▇
func ladder(layers int) {
for i := 1; i <= layers; i++ {
if i == 1 {
fmt.Println("♡")
} else {
for j := 1; j <= i; j++ {
fmt.Printf("▇")
}
fmt.Println()
}
}
}