while(i <= n && i % 10 == 0)
のみ印刷結果論理式で接続された式と&&
。
つまり、を意味します。はすべて真でなければなりません。
i
が1
になったときの2つのサブ式を作成します。最初のものは真ですが、2番目のもの(1
は10
の倍数ではありません)。つまり、その時点でループが終了します。あなたはなぜ0
が表示されているのか説明します。
これを修正するには、ループ制御がだけ最初にに依存するため、2つのサブ式を分離する必要があります。ただし、の印刷は、10の倍数(2番目)でのみ発生するようにしてください。
そうで、ご希望の出力10 20 30 40 50
ごとに想定し、あなたが(それは、結局、10の倍数であるにも関わらず)出力の一つとして0
を望んでいん、次の擬似コードは、トリックを行います:
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
あなたがを行う場合は、出力に含ま0
は、単に最初に0
にi
を設定し、あなたが0 10 20 30 40 50
が表示されますたいです。
私は上記のコードをいくつかの説明のクラスワークであると仮定して擬似コードとして残しました。これを手続き型言語に変換するのは比較的簡単です。
あなたのコードがしていることを言葉で教えてもらえますか? –
あなたのコードを精神的に調べ、各ステップが何をしているか教えてください。 –
最初の反復(i = 0): 'while'節は真で、' 0'を出力します。 2回目の繰り返し(i = 1): 'i%10 == 0'がfalseで' while'節はfalseでループが終了します。 – Andreas