2017-04-25 14 views
-6

このコード、特に「スペース」の部分を理解するのに助けてください。どの空間の値は、にもかかわらず、このコードの出力の最初の行にはスペース4記録されていないである:forループ内の最初の反復でコード私にこのコードを教えてください

for (i = 0; i <= 5 ;i++) { 
    --> for (space = 5 - i; space <= 4; space++) { 
      printf(" "); 
    } 

のこの部分に

#include <stdio.h> 

/* Inverted mirrored right triangle */ 
int main(int argc, char *argv[]) 
{ 
    int i, j, space; 

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

    return 0; 
} 
+2

私たちは個人学習サイトではありません。 – Olaf

+0

各変数の値を用紙に書き込みます。またはそれらを印刷する。デバッガを使用してください。 –

+0

'space = 5 - i'の場合、' i == 0 'のときは 'space'とは何ですか? –

答えて

0

濃縮物スペース値はi:0としてspace: 5-0 = 5 であり、我々は条件space <= 4を持っており、これはコントロールを満たさないためには、 は

(最初の行の)任意のスペースを印刷中括弧のための内部に移動していないしません

あなたはfor(;;)の仕組みを知っていなければなりません。

for (i=0 ; i<10 ; i++) { 
    printf("%d",i); 
} 
// end loop line 

for (loop index initialize ; condition ; do after innerloop commands) { 
    command1; 
    command2; 
} 

全てi:0の第一及びiループの内側の10未満であるため、画面上 と印刷0を実行します。 iの印刷後に が1つインクリメントされます(i++i = i+1に等しくなります)。 次にi:1,iはまだ10未満で、印刷はi:1です。画面には1が表示されますので、 がオンになります。私たちがi:9をスクリーンに印刷した後、1を増やしてi:10 となり、最後の反復が今度はi:10となり、 ループの内部が10未満でない場合、プログラム制御はループの終わりのループラインになります。

関連する問題