C語言

當前位置 /首頁/計算機/C語言/列表

C語言for迴圈

目前,C語言編譯器普遍存在於各種不同的作業系統中。那麼大家知道C語言for迴圈是什麼呢?下面一起來看看!

C語言for迴圈

除了while迴圈,C語言中還有 for 迴圈,它的使用更加靈活,完全可以取代 while 迴圈。

上節我們使用 while 迴圈來計算1加到100的值,程式碼如下:

#include int main(){ int i, sum=0; i = 1; //語句① while(i<=100 /*語句②*/ ){ sum+=i; i++; //語句③ } printf("%d",sum); return 0;}

可以看到,語句①②③被放到了不同的地方,程式碼結構較為鬆散。為了讓程式更加緊湊,可以使用 for 迴圈來代替,如下所示:

#include int main(){ int i, sum=0; for(i=1/*語句①*/; i<=100/*語句②*/; i++/*語句③*/){ sum+=i; } printf("%d",sum); return 0;}

在 for 迴圈中,語句①②③被集中到了一起,程式碼結構一目瞭然。

for 迴圈的一般形式為:

for(表示式1; 表示式2; 表示式3){

語句塊

}

 它的執行過程為:

1) 先執行“表示式1”。

2) 再執行“表示式2”,如果它的值為真(非0),則執行迴圈體,否則結束迴圈。

3) 執行完迴圈體後再執行“表示式3”。

4) 重複執行步驟 2) 和 3),直到“表示式2”的值為假,就結束迴圈。

上面的步驟中,2) 和 3) 是一次迴圈,會重複執行,for 語句的主要作用就是不斷執行步驟 2) 和 3)。

“表示式1”僅在第一次迴圈時執行,以後都不會再執行,可以認為這是一個初始化語句。“表示式2”一般是一個關係表示式,決定了是否還要繼續下次迴圈,稱為“迴圈條件”。“表示式3”很多情況下是一個帶有自增或自減操作的表示式,以使迴圈條件逐漸變得“不成立”。

for迴圈的執行過程可用下圖表示:

我們再來分析一下“計算從1加到100的和”的`程式碼:

#include int main(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } printf("%d",sum); return 0;}

 執行結果:

5050

程式碼分析:

1) 執行到 for 語句時,先給 i 賦初值1,判斷 i<=100 是否成立;因為此時 i=1,i<=100 成立,所以執行迴圈體。迴圈體執行結束後(sum的值為1),再計算 i++。

2) 第二次迴圈時,i 的值為2,i<=100 成立,繼續執行迴圈體。迴圈體執行結束後(sum的值為3),再計算 i++。

3) 重複執行步驟 2),直到第101次迴圈,此時 i 的值為101,i<=100 不成立,所以結束迴圈。

由此我們可以總結出for迴圈的一般形式:

for(初始化語句; 迴圈條件; 自增或自減){

語句塊

}

for 迴圈中的三個表示式

for 迴圈中的“表示式1(初始化條件)”、“表示式2(迴圈條件)”和“表示式3(自增或自減)”都是可選項,都可以省略(但分號;必須保留)。

1) 修改“從1加到100的和”的程式碼,省略“表示式1(初始化條件)”:

int main(){int i = 1, sum = 0;for( ; i<=100; i++){ sum+=i;}

可以看到,將i=1移到了 for 迴圈的外面。

2) 省略了“表示式2(迴圈條件)”,如果不做其它處理就會成為無窮迴圈。例如:

for(i=1; ; i++) sum=sum+i;

相當於:

i=1;while(1){ sum=sum+i; i++;}

所謂無窮迴圈,就是迴圈條件永遠成立,迴圈會一直進行下去,永不結束。無窮迴圈對程式的危害很大,一定要避免。

3) 省略了“表示式3(自增或自減)”,就不會修改“表示式2(迴圈條件)”中的變數,這時可在迴圈體中加入修改變數的語句。例如:

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

4) 省略了“表示式1(初始化語句)”和“表示式3(自增或自減)”。例如:

for( ; i<=100 ; ){ sum=sum+i; i++;}

相當於:

while(i<=100){ sum=sum+i; i++;}

5) 3個表示式可以同時省略。例如:

for( ; ; ) 語句

相當於:

while(1) 語句

6) “表示式1”可以是初始化語句,也可以是其他語句。例如:

for( sum=0; i<=100; i++ ) sum=sum+i;

7) “表示式1”和“表示式3”可以是一個簡單表示式也可以是逗號表示式。

for( sum=0,i=1; i<=100; i++ ) sum=sum+i;

或:

for( i=0,j=100; i<=100; i++,j-- ) k=i+j;

8) “表示式2”一般是關係表示式或邏輯表示式,但也可是數值或字元,只要其值非零,就執行迴圈體。例如:

for( i=0; (c=get))!=''; i+=c );

又如:

for( ; (c=get))!='' ; ) printf("%c",c);

TAG標籤:語言 #