首頁 > 後端開發 > C++ > 掌握填滿模式:帶有程式碼範例的綜合指南

掌握填滿模式:帶有程式碼範例的綜合指南

WBOY
發布: 2024-07-18 21:23:21
原創
528 人瀏覽過

Mastering Filled Patterns: A Comprehensive Guide with Code Examples

歡迎來到我們關於在 C 程式設計中使用循環創建各種填充模式的綜合指南!在本教學中,我們將逐步介紹如何繪製 18 種不同的填滿圖案。這些圖案的範圍從方形和三角形等基本形狀到菱形、六邊形和五邊形等更複雜的形狀。每個模式都是使用巢狀循環創建的,這對於初學者來說是練習 C 語言控制結構的絕佳練習。讓我們開始吧!
您可以在我們的 GitHub 儲存庫中找到所有程式碼。

目錄

  1. 巢狀循環簡介
  2. 實心正方形
  3. 實心直角三角形
  4. 實心倒直角三角形
  5. 填入右對齊三角形
  6. 填充右對齊倒三角形
  7. 填充直帕斯卡三角形
  8. 填充左帕斯卡三角形
  9. 實心等邊三角形
  10. 實心倒等邊三角形
  11. 填充金字塔
  12. 填充倒金字塔
  13. 填充鑽石
  14. 裝滿的沙漏
  15. 實心菱形
  16. 填充平行四邊形
  17. 實心六邊形
  18. 實心五邊形
  19. 實心倒五邊形
  20. 結論

嵌套循環簡介

在我們開始使用模式之前,有必要先了解巢狀循環的概念。嵌套循環是另一個循環內的一個循環。此結構對於處理多維數組和生成模式特別有用。在 C 語言中,典型的巢狀循環結構如下所示:

for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        // Code to execute
    }
}
登入後複製

實心正方形

解釋:

  • 實心方形圖案是最簡單的圖案之一。
  • 它由 n 行 n 列組成,其中每個單元格包含相同的字元。
  • 我們使用兩個巢狀循環來迭代每一行和每一列,列印每個單元格中的字元。
int n = 5; // size of the square
char ch = '*';

printf("1. Filled Square:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
登入後複製

實心直角三角形

解釋:

  • 實心直角三角形圖案從第一行中的一個字元開始,並在後續每一行中增加一個字元。
  • 此模式是透過使用兩個巢狀循環來實現的。外循環控制行數,內循環控制每行列印的字元數。
printf("2. Filled Right Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j <= i; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *   
登入後複製

實心倒直角三角形

解釋:

  • 實心倒直角三角形圖案與實心直角三角形相反。
  • 第一行以 n 個字元開始,後續每行減少一個字元。
  • 與實心直角三角形類似,此圖案是使用兩個嵌套循環創建的。
printf("3. Filled Inverted Right Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*  
登入後複製

填充右對齊三角形

解釋:

  • 實心右對齊三角形圖案與實心直角三角形類似,但三角形是右對齊的。
  • 這種模式是透過在每行之前添加空格來實現的,創建右對齊的外觀。
printf("4. Filled Right Aligned Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf("   ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  * 
登入後複製

填充右對齊倒三角形

解釋:

  • 實心右對齊倒三角形圖案與實心右對齊三角形相反。
  • 它從第一行中的一個字符開始,並在後續的每一行中增加一個字符,但三角形是右對齊的。
printf("5. Filled Right Aligned Inverted Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 1; j <= i; j++) {
        printf("   ");
    }
    for (int j = n; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *  
登入後複製

填充直帕斯卡三角形

解釋:

  • 實心直角帕斯卡三角形圖案將直角三角形和倒直角三角形組合起來形成類帕斯卡三角形。
  • 圖案的前半部類似實心直角三角形,後半部類似實心倒直角三角形。
printf("6. Filled Right Pascal Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i + 1; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
for (int i = 0; i < n; i++) {
    for (int j = n; j > i + 1; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*    
登入後複製

填充左帕斯卡三角形

解釋:

  • 填充的左帕斯卡三角形圖案與填充的右帕斯卡三角形類似,但它是左對齊的。
  • 圖案的前半部類似於填滿的右對齊三角形,後半部類似於填滿的右對齊倒三角形。
printf("7. Filled Left Pascal Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf("   ");
    }
    for (int j = 0; j < i + 1; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}

for (int i = 0; i < n; i++) {
    for (int j = 0; j < i + 1; j++) {
        printf("   ");
    }
    for (int j = n - 1; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *   
登入後複製

實心等邊三角形

解釋:

  • 填滿的等邊三角形圖案具有對稱形狀,每行居中。
  • 為了實現這一點,我們在每行之前列印空格以使字元居中。
printf("8. Filled Equilateral Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

    * 
   * * 
  * * * 
 * * * * 
* * * * *  
登入後複製

實心倒等邊三角形

解釋:

  • 實心倒等邊三角形圖案是實心等邊三角形的倒轉版本。
  • 它從底部的 n 個字符開始,每行減少一個字符,居中。
printf("9. Filled Inverted Equilateral Triangle:\n");
for (int i = n - 1; i >= 0; i--) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

* * * * * 
 * * * * 
  * * * 
   * * 
    *   
登入後複製

填充金字塔

解釋:

  • 填滿的金字塔圖案從頂部的一個字符開始,每行增加兩個字符,形成一個對稱的金字塔。
  • 我們使用空格將每一行置中。
printf("10. Filled Pyramid:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < (2 * i + 1); j++) {
        printf("%c", ch);
    }
    printf("\n");
}
登入後複製

輸出:

    *
   ***
  *****
 *******
*********  
登入後複製

填充倒金字塔

解釋:

  • 填滿倒金字塔圖案與填滿金字塔相反。
  • 它從頂部 2 * n - 1 個字符開始,每行減少兩個字符,居中。
printf("11. Filled Inverted Pyramid:\n");
for (int i = n; i > 0; i--) {
    for (int j = n - i; j > 0; j--) {
        printf(" ");
    }
    for (int j = 0; j < (2 * i - 1); j++) {
        printf("%c", ch);
    }
    printf("\n");
}
登入後複製

輸出:

*********
 *******
  *****
   ***
    *  
登入後複製

填充鑽石

解釋:

  • 實心菱形圖案是由實心等邊三角形和實心倒等邊三角形組合而成。
  • 它創造了一個對稱的菱形形狀。
printf("12. Filled Diamond:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j <= i; j++) {
        printf(" ");
    }
    for (int j = n - 1; j > i; j--) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

輸出:

    * 
   * * 
  * * * 
 * * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    *  
登入後複製

充滿沙漏

解釋:

  • 填滿沙漏圖案將倒等邊三角形和正三角形結合在一起,形成沙漏形狀。
  • 每行透過新增空格居中。
printf("13. Filled Hourglass:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
        printf(" ");
    }
    for (int j = 0; j < (n - i); j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = 1; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

Output:

* * * * * 
 * * * * 
  * * * 
   * * 
    * 
   * * 
  * * * 
 * * * * 
* * * * *   
登入後複製

Filled Rhombus

Explanation:

  • The filled rhombus pattern consists of rows where each row is shifted to the right by spaces.
  • This creates a diamond-like shape with equal length sides.
printf("14. Filled Rhombus:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i - 1; j++) {
        printf(" ");
    }
    for (int j = 0; j < n; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

Output:

    * * * * * 
   * * * * * 
  * * * * * 
 * * * * * 
* * * * *  
登入後複製

Filled Parallelogram

Explanation:

  • The filled parallelogram pattern is created by shifting each row to the right.
  • It looks like a rectangle leaning to one side.
printf("15. Filled Parallelogram:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n * 2; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

Output:

* * * * * * * * * * 
 * * * * * * * * * * 
  * * * * * * * * * * 
   * * * * * * * * * * 
    * * * * * * * * * *  
登入後複製

Filled Hexagon

Explanation:

  • The filled hexagon pattern has a wider middle section, with each row increasing and then decreasing in width.
  • This creates a hexagonal shape.
printf("16. Filled Hexagon:\n");
for (int i = 0; i < n / 2; i++) {
    for (int j = n / 2 - i; j > 0; j--) {
        printf(" ");
    }
    for (int j = 0; j < n + 1 * i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = n / 2; i >= 0; i--) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

Output:

  * * * * * 
 * * * * * * 
* * * * * * * 
 * * * * * * 
  * * * * *  
登入後複製

Filled Pentagon

Explanation:

  • The filled pentagon pattern starts with one character at the top and increases, forming a wider base.
  • This creates a pentagon-like shape.
printf("17. Filled Pentagon:\n");
for (int i = 0; i < n + 1; i++) {
    for (int j = n; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < (i + 1); j++) {
        printf(" %c", ch);
    }
    printf("\n");
}
for (int i = n / 2; i >= 0; i--) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

Output:

      *
     * *
    * * *
   * * * *
  * * * * *
 * * * * * *
* * * * * * * 
 * * * * * * 
  * * * * *  
登入後複製

Filled Inverted Pentagon

Explanation:

  • The filled inverted pentagon pattern is the inverted version of the filled pentagon.
  • It starts with the wider base and decreases, forming an inverted pentagon shape.
printf("18. Filled Inverted Pentagon:\n");
for (int i = 0; i <= n / 2; i++) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = n + 1; i > 0; i--) {
    for (int j = n + 2; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
登入後複製

Output:

  * * * * * 
 * * * * * * 
* * * * * * * 
 * * * * * * 
  * * * * * 
   * * * * 
    * * * 
     * * 
      *   
登入後複製

Conclusion

Learning to create these filled patterns in C is an excellent way to practice using nested loops and enhance your understanding of how loops work. By experimenting with different values and shapes, you can deepen your understanding of control structures in C and develop a keen eye for detail and logic. Whether you're a beginner or looking to brush up on your skills, these patterns provide a solid foundation for mastering loops in C programming.

We hope this guide has been helpful and encourages you to explore more complex patterns and designs. Happy coding!

For more tutorials and coding tips, be sure to subscribe to our blog and follow us on social media!

以上是掌握填滿模式:帶有程式碼範例的綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板