Rumah >pembangunan bahagian belakang >C++ >Menguasai Corak Berongga: Panduan Komprehensif dengan Contoh Kod

Menguasai Corak Berongga: Panduan Komprehensif dengan Contoh Kod

WBOY
WBOYasal
2024-07-16 19:00:58792semak imbas

Mastering Hollow Patterns: A Comprehensive Guide with Code Examples

Selamat datang ke panduan komprehensif kami tentang mencipta pelbagai corak berongga menggunakan gelung dalam pengaturcaraan C! Dalam tutorial ini, kami akan melalui arahan langkah demi langkah tentang cara melukis 18 corak berongga yang berbeza. Corak ini terdiri daripada bentuk asas seperti segi empat sama dan segi tiga kepada bentuk yang lebih kompleks seperti berlian, heksagon dan pentagon. Setiap corak dicipta menggunakan gelung bersarang, menjadikannya latihan yang sangat baik untuk pemula untuk mempraktikkan struktur kawalan dalam C. Mari selami!

Anda boleh menemui semua kod dalam repositori GitHub kami.

Jadual Kandungan

  1. Pengenalan kepada Gelung Bersarang
  2. Petak Berongga
  3. Segi Tiga Berongga Kanan
  4. Segi Tiga Kanan Terbalik Berongga
  5. Segi Tiga Jajaran Kanan Berongga
  6. Segi Tiga Terbalik Jajaran Kanan Berongga
  7. Segitiga Pascal Berongga Kanan
  8. Segitiga Pascal Kiri Berongga
  9. Segi Tiga Sama Berongga
  10. Segi Tiga Sama Sisi Terbalik Berongga
  11. Piramid Berongga
  12. Piramid Terbalik Berongga
  13. Berlian Berongga
  14. Jam Pasir Berongga
  15. Rombus Berongga
  16. Jalur Berongga
  17. Heksagon Berongga
  18. Pentagon Berongga
  19. Pentagon Terbalik Berongga
  20. Kesimpulan

Pengenalan kepada Gelung Bersarang

Sebelum kita mula dengan corak, adalah penting untuk memahami konsep gelung bersarang. Gelung bersarang ialah gelung di dalam gelung lain. Struktur ini amat berguna untuk mengendalikan tatasusunan berbilang dimensi dan untuk menjana corak. Dalam C, struktur gelung bersarang biasa kelihatan seperti ini:

for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        // Code to execute
    }
}

Dataran Berongga

Penjelasan:

  • Corak segi empat sama berongga terdiri daripada n baris dan n lajur.
  • Watak dicetak hanya di sempadan (baris pertama, baris terakhir, lajur pertama dan lajur terakhir).
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");
}

Output:

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

Segi Tiga Berongga Kanan

Penjelasan:

  • Corak segi tiga tepat berongga bermula dengan satu aksara dalam baris pertama dan bertambah satu aksara dalam setiap baris berikutnya.
  • Watak dicetak hanya di sempadan (baris pertama, baris terakhir dan pepenjuru).
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");
}

Output:

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

Segi Tiga Kanan Terbalik Berongga

Penjelasan:

  • Corak segi tiga tepat songsang berongga bermula dengan n aksara dalam baris pertama dan berkurangan satu aksara dalam setiap baris berikutnya.
  • Watak dicetak hanya di sempadan (baris pertama, baris terakhir dan pepenjuru).
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");
}

Output:

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

Segi Tiga Jajaran Kanan Berongga

Penjelasan:

  • Corak segi tiga sejajar kanan berongga adalah serupa dengan segi tiga tepat berongga, tetapi segi tiga itu dijajarkan ke kanan.
  • Watak dicetak hanya di sempadan (baris pertama, baris terakhir dan pepenjuru).
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");
}

Output:

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

Segi Tiga Songsang Dijajarkan Kanan Berongga

Penjelasan:

  • Corak segi tiga terbalik dijajarkan ke kanan berongga adalah bertentangan dengan segi tiga dijajarkan ke kanan berongga.
  • Ia bermula dengan n aksara dalam baris pertama dan berkurangan sebanyak satu aksara dalam setiap baris berikutnya, tetapi segi tiga dijajarkan ke kanan.
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");
}

Output:

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

Segitiga Pascal Kanan Berongga

Penjelasan:

  • Corak segi tiga Pascal kanan berongga menggabungkan segi tiga tepat dan segi tiga tepat terbalik untuk membentuk segi tiga seperti Pascal.
  • Watak dicetak hanya di sempadan (baris pertama, baris terakhir dan pepenjuru).
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");
}

Output:

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

Segitiga Pascal Kiri Berongga

Penjelasan:

  • Corak segitiga Pascal kiri berongga adalah serupa dengan segi tiga Pascal kanan berongga, tetapi ia dijajar ke kiri.
  • Watak dicetak hanya di sempadan (baris pertama, baris terakhir dan pepenjuru).
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");
}

Output:

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

Segi Tiga Sama Berongga

Penjelasan:

  • Corak segi tiga sama sisi berongga adalah simetri dan berpusat.
  • Watak dicetak hanya di sempadan (baris pertama, baris terakhir dan pepenjuru).
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");
}

Output:

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

Segi Tiga Sama Sisi Terbalik Berongga

Penjelasan:

  • The hollow inverted equilateral triangle pattern is the opposite of the hollow equilateral triangle.
  • Characters are printed only at the borders (first row, last row, and the diagonals).
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:

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

Hollow Pyramid

Explanation:

  • The hollow pyramid pattern is centered and symmetrical.
  • Characters are printed only at the borders (first row, last row, and the diagonals).
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:

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

Hollow Inverted Pyramid

Explanation:

  • The hollow inverted pyramid pattern is the opposite of the hollow pyramid.
  • Characters are printed only at the borders (first row, last row, and the diagonals).
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:

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

Hollow Diamond

Explanation:

  • The hollow diamond pattern is symmetrical and centered.
  • It consists of a hollow upper and lower triangle.
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:

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

Hollow Hourglass

Explanation:

  • The hollow hourglass pattern is symmetrical and centered.
  • It consists of a hollow upper and lower inverted triangle.
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:

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

Hollow Rhombus

Explanation:

  • The hollow rhombus pattern is symmetrical and centered.
  • Characters are printed only at the borders.
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:

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

Hollow Parallelogram

Explanation:

  • The hollow parallelogram pattern is symmetrical and slanted to one side.
  • Characters are printed only at the borders.
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:

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

Hollow Hexagon

Explanation:

  • The hollow hexagon pattern consists of a combination of upper and lower triangles and a middle section.
  • Characters are printed only at the borders.
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:

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

Hollow Pentagon

Explanation:

  • The hollow pentagon pattern consists of an upper triangle and a lower rectangle.
  • Characters are printed only at the borders.
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:

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

Hollow Inverted Pentagon

Explanation:

  • The hollow inverted pentagon pattern consists of an upper inverted triangle and a lower inverted rectangle.
  • Characters are printed only at the borders.
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:

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

Conclusion

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.

Atas ialah kandungan terperinci Menguasai Corak Berongga: Panduan Komprehensif dengan Contoh Kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Struktur Data GiliranArtikel seterusnya:Struktur Data Giliran