正文 第17章 循環結構程序設計1(2 / 2)

在上例的循環體中,if語句的條件和while的循環條件相同,隻是巧合,並非必需。

循環體中,循環變量的值不斷變化很重要。例6.2中,如果num的值恒定不變,則循環條件也永不改變,導致死循環。

do-while循環同樣需要循環變量初始化。此外,因為do-while循環在循環體的底部進行循環條件的判定,所以它至少將執行一次循環體。而while語句在循環的頂部進行判斷,有可能一次都不執行循環體。

do-while在許多場合都可以做while能做的事,比如上節中求sum=∑100〖〗n=1n。

[例63]用do-while寫出的完整程序。

voidmain()

inti,sum=0;

i=1;

do

sum=sum+i;

i=i+1;

}while(i100時,整個循環結束。

如果將for語句的一般形式用while語句來表示,則為如下形式:

表達式1;

while(表達式2)

循環體;

表達式3;

所以for語句將while或do-while中循環體所用的循環控製放在循環頂部統一表達,顯得更加直觀。除此之外,for語句還充分表現了其靈活性。

(1)表達式1可以省略。此時應在for語句之前給循環變量賦初值。若省略表達式1,其後的分號不能省略。

例如求和運算:

i=1;

for(;i=100)break;

等價於:

for(i=1;1;i++)/*表達式2為真(值為1)*/

sum+=i;

if(i>=100)break;

此處break表示退出循環,詳見681節。

(3)表達式3可以省略。但此時程序員應另外設法讓循環變量遞進變化,以保證循環能正常結束。

例如求和運算:

for(i=1;i100)break;

(6)表達式1,表達式2,表達式3都可以為任何類型的表達式。

例如求和運算中可設置sum的初值:

for(sum=0;i