C語言基礎丨(六)程式結構 迴圈結構 3

2022-06-05 06:36:07 字數 2681 閱讀 5104

迴圈結構可以減少源程式重複書寫的工作量,用來描述重複執行某段演算法的問題,這是程式設計中最能發揮計算機特長的程式結構。

c語言中提供四種迴圈,即goto迴圈、while迴圈、do?cwhile迴圈和for迴圈。四種迴圈可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto迴圈,因為強制改變程式的順序經常會給程式的執行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種迴圈。

總體註解:

while語句建立乙個迴圈,該迴圈在判斷表示式為假(或0)之前重複執行。while語句是乙個入口條件(entry-condition)迴圈,在進行一次迴圈之前決定是否要執行迴圈。因此有可能一次也不執行。迴圈的語句部分可以是乙個簡單語句或乙個復合的語句。

其一般形式如下:

while(表示式)

迴圈體語句

意思是,先計算「表示式」的值,當值為真(非0)時, 執行「語句塊」;執行完「語句塊」,再次計算表示式的值,如果為真,繼續執行「語句塊」……這個過程會一直重複,直到表示式的值為假(0),就退出迴圈,執行 while 後面的**。

我們通常將「表示式」稱為迴圈條件,把「語句塊」稱為迴圈體,整個迴圈的過程就是不停判斷迴圈條件、並執行迴圈體**的過程。

例子:

while(i++<10)

總體註解:

do while語句建立乙個迴圈,它在判斷表示式為假(或0)之前重複執行。do while語句是乙個退出條件迴圈,在執行一次迴圈之後才決定是否要再次執行迴圈,因此迴圈至少要被執行一次。迴圈的語句部分可以是乙個簡單的語句或乙個復合語句。

形式

do

迴圈體語句

}while(表示式);

do-while迴圈與while迴圈的不同在於:它會先執行「語句塊」,然後再判斷表示式是否為真,如果為真則繼續迴圈;如果為假,則終止迴圈。因此,do-while 迴圈至少要執行一次「語句塊」。

例子:

do

printf("count %d",i);

}while(i<20);

注意while(i<20);最後的分號;,這個必須要有。

總體注釋:

for語句使用由分號隔開的三個控制表示式來控制迴圈過程。初始化表示式只在開始執行迴圈語句之前執行一次。如果判斷表示式為真(或非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) for語句一般形式中的各表示式bai可以省略,但是分號間隔符不能少。需要注意省略表示式1之前要給迴圈變數賦初值。

2) 如省略去表示式2或者3則將造成無限迴圈,這是應在迴圈體內設法結束迴圈

main(){

int a=0,n=4;

for(;;)(

a++,n--;

print("%d",a*2);

if(n==0) break;)

上面例子中 for語句的表示式完全省去,由迴圈體中的語句實現迴圈變數的遞減和迴圈條件的判斷。當n的值為0時,由break 語句終止迴圈,轉去執行for語句以後的程式。

在此情況下,for語句以等價於while(1)語句,如果在迴圈體中沒有相應的控制手段,將造成死迴圈。

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

最後

還沒關注的小夥伴,可以長按關注一下:

C語言基礎丨(六)程式結構 迴圈結構 3

迴圈結構可以減少源程式重複書寫的工作量,用來描述重複執行某段演算法的問題,這是程式設計中最能發揮計算機特長的程式結構。c語言中提供四種迴圈,即goto迴圈 while迴圈 do?cwhile迴圈和for迴圈。四種迴圈可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto迴圈,因為...

C語言程式結構

接下來就是逐條分析 1 在預處理指令中主要需要注意的是 include和 include stdio.h 是有區別的,籠統的說就是被包含與包含的關係。2 主函式注意定義型別,定義型別與最後的return對應,用於接收return的值 例如 include stdio.h int main 這裡的in...

c語言程式結構

1.順序結構 順序控制結構的一般形式如下 2.選擇結構 if語句 一般形式為 if 表示式 語句 其功能是如果表示式的值為真,則執行後面語句的相應操作,反之,如果表示式的值為假,則不會執行後面語句的相應程式。注意if語句後面不需要加分號。注意 if a if a 0 這兩種 的判斷中都有a變數,a值...