2011-03-24 22 views
0

在一個實踐的檢驗,我的教授給我寫這個程序Ç預設電臺:幫助理解for循環

#include <stdio.h> 

int main (void) 
{ 
    int i, sum; 
    sum=0; 
    for (i=1;i<=7;i++) 
     sum=sum+i*i; 
    printf("Rocky\n"); 
    printf("i is %d\n", i); 
    printf("sum is %d\n",sum); 

    return (0); 
} 

現在,我的問題是:爲什麼是,當我運行該程序的輸出是:

Rocky 
i is 8 
sum is 140 

爲什麼岩石只能印一次?不應該打印多少次我打印? UNDERSTOOD。感謝所有幫助:)

+0

它被多次打印! (都是*印刷*只有一次) – BrokenGlass 2011-03-24 03:59:55

+1

OMG。在6分鐘內由7個不同的人編輯7,問題成爲維基。 :) – 2011-03-24 04:02:58

+4

在Stack Overflow中「答謝」答案的方法是對upvote和/或接受答案進行解答,而不是將感謝信附上原始問題。 – 2011-03-24 04:04:53

回答

8

問題是,沒有大括號{ },循環的正文是for語句後面的單行。

因此在本例中,sum=sum+i*i;行被執行7次,並且printf語句在循環結束後輸出變量的狀態。

5

否。for循環不在大括號中,所以它只執行它下面的行。

這將括號內打印然而一切多次循環運行

for (i=1;i<=7;i++) 
{ 
    sum=sum+i*i; 
    printf("Rocky\n"); 
    printf("i is %d\n", i); 
    printf("sum is %d\n",sum); 
} 
+0

AHHH好吧我有你們。謝謝 :) – James 2011-03-24 04:01:51

3

號不帶括號{}只有for循環中循環直接執行後面的語句。

for (i=1;i<=7;i++) 
    sum=sum+i*i; 

相同:

for (i=1;i<=7;i++) { 
    sum=sum+i*i; 
} 
1

每到後所做的修改,洛基printf線是for循環外,因此將不再重複。我想你想是這樣的:

int main (void) 
{ 
    int i, sum; 
    sum=0; 
    for (i=1;i<=7;i++) 
    { 
     sum=sum+i*i; 
     printf("Rocky\n"); 
     printf("i is %d\n", i); 
     printf("sum is %d\n",sum); 
    } 

    return (0); 
} 
1
for (i=1;i<=7;i++) 
    sum=sum+i*i; 
// .... 

是相同

for (i=1;i<=7;i++) 
{ 
    sum=sum+i*i; 
} 
// .... 
1

的for循環的默認範圍是緊跟其後的聲明之後。因此,如果沒有大括號編寫,for循環後面的語句將只執行一次(默認情況下)。 如果需要在for循環中執行多個語句,我們使用大括號{}, 所有語句都放在這些大括號內,形成一個「代碼塊」。

例如爲:

 for (bla; bla; bla;) 
    { 
     do this; 
     and this; 
     and this as well; 
    } 

您可以只用本身用你想要的代碼塊在你的程序中,有循環,控制指令, 也許,它不會不管,也不是編譯器將拋出一個錯誤。