Verschachtelte Schleifen
Eine Schleife kann eine andere Schleife enthalten. Das nennt man eine verschachtelte Schleife. In jedem Durchlauf der äußeren Schleife läuft die innere Schleife einmal ganz durch. Zeichnen wir ein Rechteck aus Sternen, 3 Zeilen mit je 5 Sternen:
for (int zeile = 1; zeile <= 3; zeile++) {
for (int spalte = 1; spalte <= 5; spalte++) {
printf("*");
}
printf("\n");
}Das gibt Folgendes aus:
*****
*****
*****Die äußere Schleife beginnt mit der ersten Zeile, und die innere Schleife gibt fünf Sterne aus. printf("*") hat kein \n, die Sterne stehen also nebeneinander in einer Zeile. Nach der inneren Schleife beendet printf("\n") die Zeile. Erst dann geht die äußere Schleife zur zweiten Zeile, und die innere Schleife gibt wieder fünf Sterne aus. Der innere Block wird 3 × 5 = 15-mal ausgeführt. Gib den Variablen der beiden Schleifen verschiedene Namen (hier zeile und spalte), damit du weißt, welche welche ist.
Sieh dir an, wo printf("\n"); steht: nach der schließenden Klammer der inneren Schleife, aber noch in der äußeren Schleife. Es wird jedes Mal ausgeführt, wenn die innere Schleife eine ganze Zeile ausgegeben hat. In der inneren Schleife würde es jeden Stern in eine eigene Zeile setzen. Nach der äußeren Schleife würde es alle 15 Sterne in eine lange Zeile setzen.
Die innere Schleife kann die Variable der äußeren verwenden. Dieses Einmaleins gibt zeile * spalte mit einem Leerzeichen dahinter aus:
for (int zeile = 1; zeile <= 3; zeile++) {
for (int spalte = 1; spalte <= 5; spalte++) {
printf("%d ", zeile * spalte);
}
printf("\n");
}1 2 3 4 5
2 4 6 8 10
3 6 9 12 15 Auch jede Zeile endet mit einem Leerzeichen. Man sieht es nicht, und hier stört es nicht.
Auch die Bedingung der inneren Schleife kann die äußere Variable verwenden. Mit spalte <= zeile läuft die innere Schleife in der ersten Zeile einmal, in der zweiten zweimal und so weiter, und die Sterne bilden ein Dreieck:
for (int zeile = 1; zeile <= 4; zeile++) {
for (int spalte = 1; spalte <= zeile; spalte++) {
printf("*");
}
printf("\n");
}*
**
***
****Noch etwas: break in der inneren Schleife beendet nur die innere Schleife. Die äußere Schleife macht mit ihrem nächsten Durchlauf weiter.
So schreibst du es:
Anweisungen
- 1
Zeichne ein Rechteck aus Sternen mit 4 Zeilen und 6 Sternen in jeder Zeile. Verwende zwei verschachtelte
for-Schleifen: eine äußere Schleife mit der Variablenzeileund eine innere Schleife mit der Variablenspalte. Die innere Schleife gibt einen*ohne\naus. Danach, noch in der äußeren Schleife, beendetprintf("\n");die Zeile. - 2
Gib unter dem Rechteck ein Einmaleins von 1 bis 5 aus: fünf Zeilen mit je fünf Zahlen, getrennt durch Leerzeichen. Die erste Zeile ist
1 2 3 4 5, die zweite2 4 6 8 10und die letzte5 10 15 20 25. Verwende wieder zwei verschachteltefor-Schleifen und beende jede Zeile mitprintf("\n");in der äußeren Schleife.