説明

2017-02-13 19 views
0
#include <stdio.h> 

int main() 
{ 
    int i,j; 
    for(i=5; i>=1;i--) 
    { 
    for(j=1; j<=i; j++) 
    { 
     printf("*"); 
    } 
    printf("\n"); 
    } 
    return 0; 
} 

出力:私はループがで何を行に入れてするかを決めるん。このコードのショーでijの役割は何かということを知りたいと思った説明

***** 
**** 
*** 
** 
* 

列?可能な限り詳細にループを説明してくださいbtw私はここで新しいです!ありがとう!

+1

https://en.wikipedia.org/wiki/For_loop – Jack

+3

を取得し、変数の役割は、特定の型の値を格納することです。 – Olaf

+1

宿題のような音... –

答えて

0

最初に、外側ループは、iから5に設定します。内側のループは、1から5になるので、5回を繰り返します。したがって*****が印刷されます。内部ループの後に'\n'が印刷されます。それは、私たちが2番目の行に続いていることを意味します。
外部ループはi4をデクリメントします。つまり、内側のループはそれぞれ4回繰り返されます。したがって、****が印刷され、その後は'\n'が続きます。次の行に進みます。
外部ループはi3をデクリメントします。つまり、内側のループはそれぞれ3回繰り返されます。したがって、***が印刷され、その後は'\n'が続きます。これは、i1になるまで続きます。つまり、最後のループは*だけを出力します。その後、ループが完了し、プログラムが終了します。
したがって、基本的にはijがループの繰り返し頻度を決定しています。

+0

ウルの答えは、あなたに感謝する最も簡単でしたありがとう –

0

ループを使用するときは、「カウンタ」が必要です。基本的に何かが発生すると変数が変化し、カウンタが一定数に達するとループが終了します。 iおよびjはここでのカウンターです。これは非常に一般的な定義です。プログラミングループを調べる必要があります。

int i,j;は、値を与えずにijという名前の変数を初期化します。

for(i=5; i>=1;i--)は言う:iiが1以上であるが、5に等しい(これは何i--手段である、1)iをデクリメント。このループ内

は言う for(j=1; j<=i; j++)ループである: ji以下でありながら、 jが1に等しい(元々5であるが、デクリメントしながら、外側ループ反復)、 インクリメント j、または増加によって1つ( j++は1つ増えます)。

各ループには、外側ループと内側ループの繰り返しとして "*"または改行(\n)を印刷することを意味するprintfステートメントがあります。

return 0がで外部からプログラムに

+0

ありがとう、そんなに –

3

ましょう作業を終了します。次のように

for (i = 5; i >= 1; i--) 
{ 
    loop-body 
}

動作のシーケンスは、次のとおり

  1. 初期i5i = 5)に、
  2. i >= 1が真の場合は3に、それ以外の場合は6に移動します。
  3. ii--
  4. ジャンプ2からloop-body
  5. 減算1を実行します。
  6. ループを終了します。したがって

loop_body内のステートメントのシーケンスが5回実行されている - 場合i到達0に、iが1、2、3、4には、5から進み、ループが実行されるたびに0の場合、条件i >= 1はもはや真でなく、ループはその時点で終了します。もう少しそれを破壊

for (i = 5; i >= 1; i--) 
{ 
    inner-loop 
    printf("\n"); 
}

printf("\n")は標準出力に改行文字を書き込み - この以下のいずれかの出力は新しい行に書き込まれます。だから我々のシーケンスは

  1. です。iから5までです。
  2. i >= 1がtrueの場合はgoto 3、そうでない場合はgoto 7;
  3. 実行inner-loop;
  4. 標準出力に改行文字を書き込みます。
  5. 1iから減算する。
  6. 後2。
  7. ループを終了します。

仕上げにストレートジャンプ:オペレーションの

for (i = 5; i >= 1; i--) 
{ 
    for (j = 1; j <= i; j++) 
    { 
    printf("*"); 
    } 
    printf("\n"); 
}

私たちのシーケンスは以下のようになります。

  1. 初期i5へ。
  2. i >= 1が真の場合は3に、そうでない場合は10に移動します。
  3. j~1を初期化します。
  4. j <= iがtrueの場合は、goto 5、それ以外の場合はgoto 8;
  5. 標準出力に*文字を書き込みます。
  6. 1からjj++)を追加します。
  7. 後藤4;
  8. 改行を標準出力に書き出します。
  9. 後2。
  10. ループを終了します。

printf("*");を5回連続して呼び出すと、*****が標準出力に書き込まれます。これを4回連続して呼び出すと、****が書き込まれます。あなたが間にprintf("\n");を呼び出す場合、あなたは

***** 
**** 
+0

ありがとう!そのような詳細な答えのために、私はそれをとても高く評価します –