Heim > Backend-Entwicklung > C++ > Hauptteil

Hohlmuster beherrschen: Ein umfassender Leitfaden mit Codebeispielen

WBOY
Freigeben: 2024-07-16 19:00:58
Original
577 Leute haben es durchsucht

Mastering Hollow Patterns: A Comprehensive Guide with Code Examples

Willkommen zu unserem umfassenden Leitfaden zum Erstellen verschiedener Hohlmuster mithilfe von Schleifen in der C-Programmierung! In diesem Tutorial gehen wir Schritt für Schritt durch, wie man 18 verschiedene Hohlmuster zeichnet. Diese Muster reichen von Grundformen wie Quadraten und Dreiecken bis hin zu komplexeren Formen wie Rauten, Sechsecken und Fünfecken. Jedes Muster wird mithilfe verschachtelter Schleifen erstellt, was es zu einer hervorragenden Übung für Anfänger macht, um Kontrollstrukturen in C zu üben. Lassen Sie uns eintauchen!

Den gesamten Code finden Sie in unserem GitHub-Repository.

Inhaltsverzeichnis

  1. Einführung in verschachtelte Schleifen
  2. Hohles Quadrat
  3. Hohles rechtwinkliges Dreieck
  4. Hohles umgekehrtes rechtwinkliges Dreieck
  5. Hohles rechtsbündiges Dreieck
  6. Hohles rechtsbündiges umgekehrtes Dreieck
  7. Hohles rechtes Pascal-Dreieck
  8. Hohles linkes Pascal-Dreieck
  9. Hohles gleichseitiges Dreieck
  10. Hohles umgekehrtes gleichseitiges Dreieck
  11. Hohle Pyramide
  12. Hohle umgekehrte Pyramide
  13. Hohler Diamant
  14. Hohle Sanduhr
  15. Hohle Raute
  16. Hohles Parallelogramm
  17. Hohles Sechseck
  18. Hohles Fünfeck
  19. Hohles umgekehrtes Fünfeck
  20. Fazit

Einführung in verschachtelte Schleifen

Bevor wir mit den Mustern beginnen, ist es wichtig, das Konzept der verschachtelten Schleifen zu verstehen. Eine verschachtelte Schleife ist eine Schleife innerhalb einer anderen Schleife. Diese Struktur ist besonders nützlich für die Handhabung mehrdimensionaler Arrays und für die Generierung von Mustern. In C sieht eine typische verschachtelte Schleifenstruktur so aus:

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

Hohles Quadrat

Erklärung:

  • Das hohle Quadratmuster besteht aus n Zeilen und n Spalten.
  • Zeichen werden nur an den Rändern gedruckt (erste Zeile, letzte Zeile, erste Spalte und letzte Spalte).
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");
}
Nach dem Login kopieren

Ausgabe:

*  *  *  *  *  
*           *  
*           *  
*           *  
*  *  *  *  *  
Nach dem Login kopieren

Hohles rechtwinkliges Dreieck

Erklärung:

  • Das hohle rechtwinklige Dreiecksmuster beginnt mit einem Zeichen in der ersten Reihe und erhöht sich in jeder folgenden Reihe um ein Zeichen.
  • Zeichen werden nur an den Rändern gedruckt (erste Reihe, letzte Reihe und die Diagonale).
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");
}
Nach dem Login kopieren

Ausgabe:

*  
*  *  
*     *  
*        *  
*  *  *  *  *  
Nach dem Login kopieren

Hohles umgekehrtes rechtwinkliges Dreieck

Erklärung:

  • Das hohle umgekehrte rechtwinklige Dreiecksmuster beginnt mit n Zeichen in der ersten Zeile und verringert sich in jeder folgenden Zeile um ein Zeichen.
  • Zeichen werden nur an den Rändern gedruckt (erste Reihe, letzte Reihe und die Diagonale).
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");
}
Nach dem Login kopieren

Ausgabe:

*  *  *  *  *  
*        *  
*     *  
*  *  
*  
Nach dem Login kopieren

Hohles, rechtsbündiges Dreieck

Erklärung:

  • Das hohle, rechtsbündige Dreiecksmuster ähnelt dem hohlen, rechtwinkligen Dreieck, aber das Dreieck ist rechtsbündig.
  • Zeichen werden nur an den Rändern gedruckt (erste Reihe, letzte Reihe und die Diagonale).
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");
}
Nach dem Login kopieren

Ausgabe:

            *  
         *  *  
      *     *  
   *        *  
*  *  *  *  *  
Nach dem Login kopieren

Hohles, rechtsbündiges, umgekehrtes Dreieck

Erklärung:

  • Das hohle, rechtsbündige umgekehrte Dreiecksmuster ist das Gegenteil des hohlen, rechtsbündigen Dreiecks.
  • Es beginnt mit n Zeichen in der ersten Zeile und verringert sich in jeder folgenden Zeile um ein Zeichen, aber das Dreieck ist rechtsbündig.
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");
}
Nach dem Login kopieren

Ausgabe:

*  *  *  *  *  
   *        *  
      *     *  
         *  *  
            *  
Nach dem Login kopieren

Hohles rechtes Pascal-Dreieck

Erklärung:

  • Das hohle rechtwinklige Pascal-Dreieckmuster kombiniert das rechtwinklige Dreieck und das umgekehrte rechtwinklige Dreieck zu einem Pascal-ähnlichen Dreieck.
  • Zeichen werden nur an den Rändern gedruckt (erste Reihe, letzte Reihe und die Diagonalen).
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");
}
Nach dem Login kopieren

Ausgabe:

*  
*  *  
*     *  
*        *  
*           *  
*        *  
*     *  
*  *  
*  
Nach dem Login kopieren

Hohles linkes Pascal-Dreieck

Erklärung:

  • Das Muster des hohlen linken Pascal-Dreiecks ähnelt dem hohlen rechten Pascal-Dreieck, ist jedoch linksbündig.
  • Zeichen werden nur an den Rändern gedruckt (erste Reihe, letzte Reihe und die Diagonalen).
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");
}
Nach dem Login kopieren

Ausgabe:

            *  
         *  *  
      *     *  
   *        *  
*           *  
   *        *  
      *     *  
         *  *  
            *  
Nach dem Login kopieren

Hohles gleichseitiges Dreieck

Erklärung:

  • Das hohle gleichseitige Dreiecksmuster ist symmetrisch und zentriert.
  • Zeichen werden nur an den Rändern gedruckt (erste Reihe, letzte Reihe und die Diagonalen).
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");
}
Nach dem Login kopieren

Ausgabe:

            *  
         *     *  
      *           *  
   *                 *  
*  *  *  *  *  *  *  *  * 
Nach dem Login kopieren

Hohles umgekehrtes gleichseitiges Dreieck

Erklärung:

  • 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");
}
Nach dem Login kopieren

Output:

*  *  *  *  *  *  *  *  *  
   *                 *  
      *           *  
         *     *  
            *  
Nach dem Login kopieren

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"); 
}
Nach dem Login kopieren

Output:

    *
   * *
  *   *
 *     *
********* 
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

*********
 *     *
  *   *
   * *
    * 
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

    * 
   * * 
  *   * 
 *     * 
*       * 
 *     * 
  *   * 
   * * 
    * 
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

* * * * * 
 *     * 
  *   * 
   * * 
    * 
   * * 
  *   * 
 *     * 
* * * * * 
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

            *  *  *  *  *  
         *           *  
      *           *  
   *           *  
*  *  *  *  *  
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

* * * * * * * * * * 
 *                 * 
  *                 * 
   *                 * 
    * * * * * * * * * *  
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

  * * * * * 
 *         * 
*           * 
 *         * 
  * * * * * 
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

      *
     * *
    *   *
   *     *
  *       *
 *         *
*           * 
 *         * 
  * * * * * 
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

Output:

  * * * * * 
 *         * 
*           * 
 *         * 
  *       * 
   *     * 
    *   * 
     * * 
      *  
Nach dem Login kopieren

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.

Das obige ist der detaillierte Inhalt vonHohlmuster beherrschen: Ein umfassender Leitfaden mit Codebeispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!