while(i <= n && i % 10 == 0)
Dies ist die Fortsetzungsbedingung ist, die zwei ist Ausdrücke verbunden durch logische und &&
.
Das bedeutet beide müssen wahr sein, für die ganze Sache wahr zu sein.
Berechnen Sie nun die zwei Unterausdrücke für, wenn i
1
wird. Die erste wird wahr sein, aber nicht die zweite (1
ist kein Vielfaches von 10
), was bedeutet, dass die Schleife an diesem Punkt endet. Das erklärt, warum Sie nur 0
sehen.
Um es zu beheben, müssen Sie die zwei Unterausdrücke trennen, da die Schleifensteuerung nur auf der ersten abhängt. Allerdings wollen Sie immer noch Drucken passieren für ein Vielfaches von zehn (die zweite).
So, wie pro Ihre gewünschte Ausgabe unter der Annahme 10 20 30 40 50
, Sie nicht0
als einer der Ausgänge wollen (obwohl es sich als immerhin ein Vielfaches von 10), die folgende Pseudo-Code wird den Trick :
set n to 50, i to 1
while i is less than or equal to n:
if the remainder when i is divided by 10 is 0:
output i
increment i
Wenn Sie tun gesetzt in der Ausgabe enthalten0
wollen, einfach zunächst i
-0
, und Sie werden 0 10 20 30 40 50
sehen.
Ich habe den Code oben als Pseudo-Code in der Annahme, dass dies Klassenarbeit einer Beschreibung ist - es sollte relativ einfach, das in jede Verfahrenssprache zu verwandeln.
Können Sie uns in Worten sagen, was Ihr Code macht? –
Gehen Sie mental durch Ihren Code und sagen Sie uns, was jeder Schritt macht. –
Erste Iteration (i = 0): 'while'-Klausel wahr und es druckt' 0'. Zweite Iteration (i = 1): 'while'-Klausel ist falsch, weil 'i% 10 == 0' falsch ist und die Schleife endet. – Andreas