Swift程式列印8星圖案


本教程將討論如何編寫Swift程式來建立8星圖案。

星形圖案是由“*”組成的序列,用於開發不同的圖案或形狀,例如金字塔、矩形、十字架等。這些星形圖案通常用於理解或練習程式流程控制,它們也對邏輯思維很有幫助。

要建立8星圖案,我們可以使用以下任何一種方法:

  • 使用巢狀for迴圈
  • 使用stride函式

以下是演示:

輸入

假設我們的給定輸入為:

Num = 5

輸出

所需的輸出將是:

 ***  
*   * 
*   * 
*   * 
 ***  
*   * 
*   * 
*   * 
 ***  

演算法

以下是演算法:

步驟1 - 宣告一個名為rows的變數來儲存列數。

步驟2 - 宣告另一個變數來儲存行數:

var val = row * 2 - 1

步驟3 - 執行從0到val的外部for迴圈。此迴圈處理行。

步驟4 - 檢查(x==1 || x==row || x==val)是否為真。

如果條件為真,則執行第一個巢狀for迴圈(從1到row),遍歷列。在巢狀for迴圈中,如果(y==1 || y==row)為真,則列印空格,否則列印“*”。

如果條件為假,則執行第二個巢狀for迴圈(從1到row),遍歷列。在巢狀for迴圈中,如果(y==1 || y==row)為真,則列印“*”,否則列印空格。

步驟5 - 列印輸出。

方法1 - 使用巢狀for迴圈

我們可以使用巢狀for迴圈建立“*”的8星圖案或任何其他圖案。這裡每個for迴圈處理不同的任務,例如最外層的for迴圈用於新行等。

示例

以下程式展示瞭如何使用巢狀for迴圈列印8星圖案。

var row = 10
var val = row * 2 - 1
for x in 1...val{
   if(x==1 || x==row || x==val){
      for y in 1...row{
         if(y==1 || y==row){
            print(" ", terminator:"")
         }
         else{
            print("*", terminator:"")
         }
      } 
   }
   else{
      for y in 1...row{
         if(y==1 || y==row){
            print("*", terminator:"")
         }
         else{
            print(" ", terminator: "")
         }
      }
   }
   print(" ")
}

輸出

 ********  
*        * 
*        * 
*        * 
*        * 
*        * 
*        * 
*        * 
*        * 
 ********  
*        * 
*        * 
*        * 
*        * 
*        * 
*        * 
*        * 
*        * 
 ********  

方法2 - 使用Stride函式

Swift提供了一個名為stride()的內建函式。stride()函式用於以增量或減量從一個值移動到另一個值。或者我們可以說stride()函式返回從起始值開始的序列,但不包括結束值,並且給定序列中的每個值都以給定量步進。

語法

以下是語法:

stride(from:startValue, to: endValue, by:count)

這裡,

from - 表示用於給定序列的起始值。

to - 表示限制給定序列的結束值

by - 表示每次迭代的步進量,這裡正值表示向上迭代或增量,負值表示向下迭代或減量。

示例

以下程式展示瞭如何使用stride()函式列印8星圖案。

import Swift
import Foundation
var row = 9
var k = row * 2 - 1
for i in stride(from:1, to:k+1, by:1){
   if (i==1 || i==row || i==k){
      for j in stride(from:1, to:row+1, by:1){
         if (j==1 || j == row){
            print(" ", terminator:"")
         }
         else{
            print("*", terminator:"")
         }
      } 
   }
   else{
      for j in stride(from:1, to:row+1, by:1){
         if (j==1||j==row){
            print("*", terminator:"")
         }
         else{
            print(" ", terminator: "")
         }
      }
   }
   print(" ")
}

輸出

 *******  
*       * 
*       * 
*       * 
*       * 
*       * 
*       * 
*       * 
 *******  
*       * 
*       * 
*       * 
*       * 
*       * 
*       * 
*       * 
 *******  

更新於: 2022年12月13日

228 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.