首页 > 后端开发 > 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板