Swift程式列印X星型圖案
本教程將討論如何編寫 Swift 程式來列印 X 星型圖案。星型圖案是由“*”組成的序列,用於開發不同的圖案或形狀,例如金字塔、矩形、十字架等。這些星型圖案通常用於理解或練習程式流程控制,它們也對邏輯思維很有幫助。
建立 X 星型圖案,我們可以使用以下任何一種方法:
- 使用巢狀 for 迴圈
- 使用 stride 函式
以下是演示:
輸入
假設我們的給定輸入是:
Num = 5
輸出
期望的輸出將是:
* * * * * * * * * * * * * * * * *
方法 1 - 使用巢狀 for 迴圈
我們可以使用巢狀 for 迴圈建立“*”或任何其他圖案的 X 形圖案。這裡每個 for 迴圈處理不同的任務,例如最外層的 for 迴圈用於新行,巢狀的 for 迴圈用於“*”等。
示例
下面的程式展示瞭如何使用巢狀 for 迴圈列印 X 星型圖案。
import Foundation import Glibc var num = 6 // Total number of row and column in the pattern var n = num * 2 - 1 // Print rows for i in 1...n{ // Print "*" in X pattern for j in 1...n{ // For first and second diagonal if ((j == i) || (j == (n - i + 1))){ print("*", terminator: "") } else{ print("", terminator: " ") } } // Print New line print("") }
輸出
* * * * * * * * * * * * * * * * * * * * *
在上面的程式碼中,我們使用巢狀 for 迴圈來列印“*”的 X 形圖案。首先,我們使用:n = num * 2 - 1(因此行數 = 11,列數 = 11)確定要列印的行數和列數。現在,最外層的 for 迴圈(從 1 到 n)用於處理要列印的行總數,每一行都以換行符開頭。巢狀的 for 迴圈(從 1 到 n)用於處理空格和“*”。為了列印 X 十字圖案,我們使用以下條件,否則列印空格。
if(i==j) 用於列印第一條對角線。
if(j == (n - i + 1)) 用於列印第二條對角線。
方法 2 - 使用 stride 函式
Swift 提供了一個名為 stride() 的內建函式。stride() 函式用於以遞增或遞減的方式從一個值移動到另一個值。或者我們可以說 stride() 函式返回從起始值開始的序列,但不包括結束值,並且給定序列中的每個值都按給定量遞增。
語法
以下是語法:
stride(from:startValue, to: endValue, by:count)
這裡:
from − 代表給定序列的起始值。
to − 代表限制給定序列的結束值。
by − 代表每次迭代的步長,正值表示向上迭代或遞增,負值表示向下迭代或遞減。
示例
下面的程式展示瞭如何使用 stride() 函式列印 X 星型圖案。
import Foundation import Glibc var num = 3 // Total number of rows and columns in the pattern var n = num * 2 + 1 // Print rows for i in stride(from:2, to: n, by: 1){ // Print "*" in X pattern for j in stride(from:1, to: n, by: 1){ // For first and second diagonal if ((j == i) || (j == (n - i + 1))){ print("*", terminator: "") } else{ print(terminator: " ") } } // Add new line print("") }
輸出
* * * * * * * * *
在上面的程式碼中,X 形圖案中要列印的行數和列數為
N = num * 2 + 1
現在我們使用帶有 stride() 函式的 for 迴圈來處理 X 形圖案的行,並且它還在每一行之後新增換行符。stride() 函式從 2 開始到 n,每次迭代 i 的值增加 1。在這個 for 迴圈中,我們使用巢狀 for 迴圈以及 stride 函式來列印“*”和空格。因此,巢狀的 stride 函式從 1 開始到 n,每次迭代 j 的值增加 1。眾所周知,X 形圖案由兩條對角線組成,因此要列印第一條對角線,我們使用 if(i == j) 條件;要列印第二條對角線,我們使用 if(j == (n - i + 1)) 條件。如果這兩個條件都不滿足,則列印空格。