# Kotlin 程序：创建金字塔和图案

> 原文： [https://www.programiz.com/kotlin-programming/examples/pyramid-pattern](https://www.programiz.com/kotlin-programming/examples/pyramid-pattern)

#### 在此程序中，您将学习在 Kotlin 中创建金字塔，半金字塔，倒金字塔，Pascal 三角形和 Floyd 三角形唱歌控制语句。

源代码清单：

+   [使用`*`，数字和字符打印三角形的代码](#triangle)
+   [使用`*`和数字打印倒三角形的代码](#inverted-triangle)
+   [打印完整金字塔的代码](#pyramid)
+   [打印帕斯卡三角形的代码](#pascal-triangle)
+   [打印弗洛伊德三角形的代码](#floyd-triangle)

以下是等效的 Java 代码：[创建金字塔和图案的 Java 程序](/java-programming/examples/pyramid-pattern "Java Program to Create Pyramid and Pattern")

* * *

## 使用*，数字和字符打印三角形的程序

* * *

### 示例 1：使用`*`打印半金字塔的程序

```kt
*
* *
* * *
* * * *
* * * * *
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 5

    for (i in 1..rows) {
        for (j in 1..i) {
            print("* ")
        }
        println()
    }
}
```

* * *

### 示例 2：使用数字打印半金字塔的程序

```kt
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 5

    for (i in 1..rows) {
        for (j in 1..i) {
            print("$j ")
        }
        println()
    }
} 
```

* * *

### 示例 3：使用字母打印半金字塔的程序

```kt
A
B B
C C C
D D D D
E E E E E
```

**源代码**

```kt
fun main(args: Array<String>) {
    val last = 'E'
    var alphabet = 'A'

    for (i in 1..last - 'A' + 1) {
        for (j in 1..i) {
            print("$alphabet ")
        }
        ++alphabet

        println()
    }
}
```

## 使用*和数字打印倒置半金字塔的程序

* * *

### 示例 4：使用`*`打印倒置半金字塔

```kt
* * * * *
* * * *
* * * 
* *
*
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 5

    for (i in rows downTo 1) {
        for (j in 1..i) {
            print("* ")
        }
        println()
    }
}
```

* * *

### 示例 5：使用数字打印倒置半金字塔

```kt
1 2 3 4 5
1 2 3 4 
1 2 3
1 2
1
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 5

    for (i in rows downTo 1) {
        for (j in 1..i) {
            print("$j ")
        }
        println()
    }
}
```

## 使用*和数字显示金字塔和倒置金字塔的程序

* * *

### 示例 6：使用`*`打印完整金字塔的程序

```kt
 *
      * * *
    * * * * *
  * * * * * * *
* * * * * * * * *
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 5
    var k = 0

    for (i in 1..rows) {
        for (space in 1..rows - i) {
            print("  ")
        }

        while (k != 2 * i - 1) {
            print("* ")
            ++k
        }

        println()
        k = 0
    }
}
```

* * *

### 示例 7：使用数字打印金字塔的程序

```kt
 1
      2 3 2
    3 4 5 4 3
  4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 5
    var k = 0
    var count = 0
    var count1 = 0

    for (i in 1..rows) {
        for (space in 1..rows - i) {
            print("  ")
            ++count
        }

        while (k != 2 * i - 1) {
            if (count <= rows - 1) {
                print((i + k).toString() + " ")
                ++count
            } else {
                ++count1
                print((i + k - 2 * count1).toString() + " ")
            }

            ++k
        }
        k = 0
        count = k
        count1 = count

        println()
    }
} 
```

* * *

### 示例 8：使用`*`打印倒置完整金字塔

```kt
 * * * * * * * * *
  * * * * * * *
    * * * * *
      * * *
        *
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 5

    for (i in rows downTo 1) {

        for (space in 1..rows - i) {
            print("  ")
        }

        for (j in i..2 * i - 1) {
            print("* ")
        }

        for (j in 0..i - 1 - 1) {
            print("* ")
        }

        println()
    }
}
```

* * *

### 示例 9：打印 Pascal 三角形

```kt
 1
         1   1
       1   2   1
     1   3   3    1
   1   4   6   4   1
 1   5   10   10  5   1
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 6
    var coef = 1

    for (i in 0..rows - 1) {

        for (space in 1..rows - i - 1) {
            print("  ")
        }

        for (j in 0..i) {
            if (j == 0 || i == 0)
                coef = 1
            else
                coef = coef * (i - j + 1) / j

            System.out.printf("%4d", coef)
        }

        println()
    }
}
```

* * *

### 示例 10：打印弗洛伊德三角形

```kt
1
2 3
4 5 6
7 8 9 10
```

**源代码**

```kt
fun main(args: Array<String>) {
    val rows = 4
    var number = 1

    for (i in 1..rows) {

        for (j in 1..i) {
            print("$number ")
            ++number
        }

        println()
    }
}
```