[C-Programm] Verstehe 1 Abschnitt nicht

dennis3484

Ensign
Registriert
Apr. 2003
Beiträge
146
Hallo,
ich lerne gerade für meine C-Klausur. In einer der alten Klausuren gab es folgende Aufgabe, von der man dann die Ausgabe aufschreiben sollte.

Code:
#include <stdio.h>

int main()
{

int i,j;
i = 7;
for(;;)
{
	printf("%d", i);
   i -= 2;
   if (i < 1) break;
   j = 0;
   do {
   	if (j++ % i == 0) continue;
      printf("%d", j);
   }	while (i > j);
   printf("***\n");
}
printf("###\n");

}
Leider ist mir folgender Abschnitt völlig unklar:

Code:
do {
   	if (j++ % i == 0) continue;
      printf("%d", j);
   }	while (i > j);

j ist zuerst null, also müsste 0 % 5 berechnet werden, was 0 ergibt. Somit müsste schon 1 Mal die continue Anweisung ausgeführt werden. Scheint aber nicht der Fall zu sein.

Als Ergebnis kommt übrigens das heraus:
72345***
523***
3***
1###
Das Komisch an der Sache ist, wenn ich das Programm in Einzelschritten durchführe, dass ein komplett anderes Ergebnis erscheint:
75***
55***
3***
1###

Ich hoffe, dass mir jemand helfen kann.
Danke
 
1. i wird auf 7 gesetzt, ...
2. ... dann wird i um 2 dekrementiert und hat nun den Wert 5
3. j wird auf 0 gesetzt
4. j Inkrementieren, wenn j mod i = 0 dann weitermachen, d.h. nichts ausgeben
5. ... ansonsten j ausgeben, solange wie i > j ist

Die äußere FOR-Schleife sorgt halt dafür, dass diese Schritte wiederholt werden, so lange i>=1 ist. D.h. i wird die Werte annehmen: 5 3 2 -1, und dann abbrechen.

bkausbk
 
Zurück
Oben