2017-04-25 99 views
-6

有人可以幫助我理解這個代碼,特別是'空間'部分。如何是儘管爲4此代碼的輸出的第一行中的打印沒有空間的空間值:請給我解釋一下這個C代碼

#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

集中在這一段代碼

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

在for循環內第一次迭代空間值space: 5-0 = 5 作爲i:0和我們條件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 print 9然後增加一個i:10 然後上次迭代到來,就像現在的i:10並且不小於10循環內部的 不執行,程序控制在循環之後(循環結束)。