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 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告