原文: https://www.programiz.com/kotlin-programming/examples/pyramid-pattern

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

源代码清单:

以下是等效的 Java 代码:创建金字塔和图案的 Java 程序


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


示例 1:使用*打印半金字塔的程序

  1. *
  2. * *
  3. * * *
  4. * * * *
  5. * * * * *

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 5
  3. for (i in 1..rows) {
  4. for (j in 1..i) {
  5. print("* ")
  6. }
  7. println()
  8. }
  9. }

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

  1. 1
  2. 1 2
  3. 1 2 3
  4. 1 2 3 4
  5. 1 2 3 4 5

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 5
  3. for (i in 1..rows) {
  4. for (j in 1..i) {
  5. print("$j ")
  6. }
  7. println()
  8. }
  9. }

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

  1. A
  2. B B
  3. C C C
  4. D D D D
  5. E E E E E

源代码

  1. fun main(args: Array<String>) {
  2. val last = 'E'
  3. var alphabet = 'A'
  4. for (i in 1..last - 'A' + 1) {
  5. for (j in 1..i) {
  6. print("$alphabet ")
  7. }
  8. ++alphabet
  9. println()
  10. }
  11. }

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


示例 4:使用*打印倒置半金字塔

  1. * * * * *
  2. * * * *
  3. * * *
  4. * *
  5. *

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 5
  3. for (i in rows downTo 1) {
  4. for (j in 1..i) {
  5. print("* ")
  6. }
  7. println()
  8. }
  9. }

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

  1. 1 2 3 4 5
  2. 1 2 3 4
  3. 1 2 3
  4. 1 2
  5. 1

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 5
  3. for (i in rows downTo 1) {
  4. for (j in 1..i) {
  5. print("$j ")
  6. }
  7. println()
  8. }
  9. }

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


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

  1. *
  2. * * *
  3. * * * * *
  4. * * * * * * *
  5. * * * * * * * * *

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 5
  3. var k = 0
  4. for (i in 1..rows) {
  5. for (space in 1..rows - i) {
  6. print(" ")
  7. }
  8. while (k != 2 * i - 1) {
  9. print("* ")
  10. ++k
  11. }
  12. println()
  13. k = 0
  14. }
  15. }

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

  1. 1
  2. 2 3 2
  3. 3 4 5 4 3
  4. 4 5 6 7 6 5 4
  5. 5 6 7 8 9 8 7 6 5

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 5
  3. var k = 0
  4. var count = 0
  5. var count1 = 0
  6. for (i in 1..rows) {
  7. for (space in 1..rows - i) {
  8. print(" ")
  9. ++count
  10. }
  11. while (k != 2 * i - 1) {
  12. if (count <= rows - 1) {
  13. print((i + k).toString() + " ")
  14. ++count
  15. } else {
  16. ++count1
  17. print((i + k - 2 * count1).toString() + " ")
  18. }
  19. ++k
  20. }
  21. k = 0
  22. count = k
  23. count1 = count
  24. println()
  25. }
  26. }

示例 8:使用*打印倒置完整金字塔

  1. * * * * * * * * *
  2. * * * * * * *
  3. * * * * *
  4. * * *
  5. *

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 5
  3. for (i in rows downTo 1) {
  4. for (space in 1..rows - i) {
  5. print(" ")
  6. }
  7. for (j in i..2 * i - 1) {
  8. print("* ")
  9. }
  10. for (j in 0..i - 1 - 1) {
  11. print("* ")
  12. }
  13. println()
  14. }
  15. }

示例 9:打印 Pascal 三角形

  1. 1
  2. 1 1
  3. 1 2 1
  4. 1 3 3 1
  5. 1 4 6 4 1
  6. 1 5 10 10 5 1

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 6
  3. var coef = 1
  4. for (i in 0..rows - 1) {
  5. for (space in 1..rows - i - 1) {
  6. print(" ")
  7. }
  8. for (j in 0..i) {
  9. if (j == 0 || i == 0)
  10. coef = 1
  11. else
  12. coef = coef * (i - j + 1) / j
  13. System.out.printf("%4d", coef)
  14. }
  15. println()
  16. }
  17. }

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

  1. 1
  2. 2 3
  3. 4 5 6
  4. 7 8 9 10

源代码

  1. fun main(args: Array<String>) {
  2. val rows = 4
  3. var number = 1
  4. for (i in 1..rows) {
  5. for (j in 1..i) {
  6. print("$number ")
  7. ++number
  8. }
  9. println()
  10. }
  11. }