C プログラミングでループを使用してさまざまな中空パターンを作成するための包括的なガイドへようこそ!このチュートリアルでは、18 種類の中空パターンを描く方法を段階的に説明します。これらのパターンは、正方形や三角形などの基本的な形状から、ダイヤモンド、六角形、五角形などのより複雑な形状まで多岐にわたります。各パターンはネストされたループを使用して作成されているため、初心者が C の制御構造を練習するのに最適な練習になります。 それでは、詳しく見ていきましょう!
すべてのコードは GitHub リポジトリで見つけることができます。
パターンを始める前に、ネストされたループの概念を理解することが重要です。ネストされたループは、別のループ内のループです。この構造は、多次元配列の処理やパターンの生成に特に役立ちます。 C では、典型的な入れ子になったループ構造は次のようになります。
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Code to execute } }
説明:
int n = 5; // size of the square char ch = '*'; printf("1. Hollow Square:\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == 0 || i == n - 1 || j == 0 || j == n - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * * * * * *
説明:
printf("2. Hollow Right Triangle:\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < i + 1; j++) { if (i == n - 1 || j == 0 || j == i) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * *
説明:
printf("3. Hollow Inverted Right Triangle:\n"); for (int i = 0; i < n; i++) { for (int j = n; j > i; j--) { if (i == 0 || j == n || j == i + 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * *
説明:
printf("4. Hollow 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 + 1; j++) { if (i == n - 1 || j == 0 || j == i) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * *
説明:
printf("5. Hollow Right Aligned Inverted Triangle:\n"); for (int i = 0; i < n; i++) { for (int j = 1; j < i + 1; j++) { printf(" "); } for (int j = n; j > i; j--) { if (i == 0 || j == n || j == i + 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * *
説明:
printf("6. Hollow Right Pascal Triangle:\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < i + 1; j++) { if (j == 0 || j == i) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); } for (int i = 0; i < n; i++) { for (int j = n; j > i + 1; j--) { if (j == n || j == i + 2) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * * * * * *
説明:
printf("7. Hollow 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++) { if (j == 0 || j == i) { printf("%c ", ch); } else { printf(" "); } } 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--) { if (j == n - 1 || j == i + 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * * * * * *
説明:
printf("8. Hollow Equilateral Triangle:\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++) { if (j == 0 || j == 2 * i || i == n - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
出力:
* * * * * * * * * * * * * * * *
説明:
printf("9. Hollow Inverted Equilateral Triangle:\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { printf(" "); } for (int j = 2 * n - 1; j > 2 * i; j--) { if (j == 2 * n - 1 || j == 2 * i + 1 || i == 0) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * *
Explanation:
printf("10. Hollow Pyramid:\n"); for (i = 0; i < n; i++) { for (j = n - 1; j > i; j--) { printf(" "); } for (j = 0; j < (2 * i + 1); j++) { if (i == n - 1 || j == 0 || j == i * 2 ) { printf("%c", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * *********
Explanation:
printf("11. Hollow Inverted Pyramid:\n"); for (i = n; i > 0; i--) { for (j = n - i; j > 0; j--) { printf(" "); } for (j = 0; j < (2 * i - 1); j++) { if (j == 0 || i == n || j == (i-1) * 2 ) { printf("%c", ch); } else { printf(" "); } } printf("\n"); }
Output:
********* * * * * * * *
Explanation:
printf("12. Hollow Diamond:\n"); for (i = 0; i < n; i++) { for (j = n - 1; j > i; j--) { printf(" "); } for (j = 0; j < i + 1; j++) { if (j == 0 || j == i) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); } for (i = 0; i < n; i++) { for (j = 0; j < i + 1; j++) { printf(" "); } for (j = n - 1; j > i; j--) { if (j == n - 1 || j == i + 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * *
Explanation:
printf("13. Hollow Hourglass:\n"); for (i = 0; i < n; i++) { for (j = 0; j < i; j++) { printf(" "); } for (j = 0; j < (n - i) ; j++) { if (j == 0 || i == 0 || j == n - i - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); } for (i = 1; i < n; i++) { for (j = n - 1; j > i; j--) { printf(" "); } for (j = 0; j < (i + 1); j++) { if (i == n - 1 || j == 0 || j == i) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * * * * * * * * *
Explanation:
printf("14. Hollow Rhombus:\n"); for (int i = 0; i < n; i++) { for (int j = n - 1; j > i; j--) { printf(" "); } for (int j = 0; j < n; j++) { if (i == 0 || i == n - 1 || j == 0 || j == n - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * *
Explanation:
printf("15. Hollow Parallelogram:\n"); for (i = 0; i < n; i++) { for (j = 0; j < i; j++) { printf(" "); } for (j = 0; j < n * 2; j++) { if (i == n - 1 || i == 0 || j == 0 || j == n * 2 - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * * * * * * * * * * * *
Explanation:
printf("16. Hollow Hexagon:\n"); for (i = 0; i < n / 2; i++) { for (j = n / 2 - i; j > 0; j--) { printf(" "); } for (j = 0; j < n + 1 * i; j++) { if ( i == 0 || j == 0 || j == n * i) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); } for (i = n / 2; i >= 0; i--) { for (j = 0; j < n / 2 - i; j++) { printf(" "); } for (j = 0; j < n + i; j++) { if (i == n - 1 || i == 0 || j == 0 || j == n + i - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * *
Explanation:
printf("17. Hollow Pentagon:\n"); for (i = 0; i < n+1; i++) { for (j = n ; j > i; j--) { printf(" "); } for (j = 0; j < (i + 1); j++) { if ( j == 0 || i == 0 || j == i ) { printf(" %c", ch); } else { printf(" "); } } printf("\n"); } for (i = n / 2; i >= 0; i--) { for (j = 0; j < n / 2 - i; j++) { printf(" "); } for (j = 0; j < n + i; j++) { if (i == n - 1 || i == 0 || j == 0 || j == n + i - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * * * * * *
Explanation:
printf("18. Hollow 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++) { if (i == n - 1 || i == 0 || j == 0 || j == n + i - 1) { printf("%c ", ch); } else { printf(" "); } } 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++) { if ( j == 0 || j == i - 1) { printf("%c ", ch); } else { printf(" "); } } printf("\n"); }
Output:
* * * * * * * * * * * * * * * * * * * *
In conclusion, we have explored a variety of patterns using loops and conditional statements in C, each producing different geometric shapes and designs. These patterns include solid and hollow variants of squares, triangles, pyramids, diamonds, hourglasses, rhombuses, parallelograms, hexagons, and pentagons. Understanding and implementing these patterns helps to strengthen programming logic, loop constructs, and conditionals, which are fundamental concepts in computer science.
By practicing these patterns, you can enhance your problem-solving skills and improve your ability to visualize and implement complex patterns in code. These exercises also provide a solid foundation for more advanced programming tasks and algorithms.
以上が中空パターンのマスタリング: コード例を含む包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。