c語言學習心得(四)迴圈結構

2021-07-24 17:03:58 字數 3903 閱讀 6772

迴圈結構是程式中一種很重要的結構。其特點是,在給定條件成立時,反覆執行某程式段,直到條件不成立為止。給定的條件稱為迴圈條件,反覆執行的程式段稱為迴圈體。c語言提供了多種迴圈語句,可以組成各種不同形式的迴圈結構。

1) 用goto語句和if語句構成迴圈;

2) 用while語句;

3) 用do-while語句;

4) 用for語句;

goto語句以及用goto語句構成迴圈

goto語句是一種無條件轉移語句, 與basic中的goto語句相似。goto 語句的使用格式為:

goto 語句標號;

其中標號是乙個有效的識別符號,這個識別符號加上乙個「:」一起出現在函式內某處, 執行goto語句後,程式將跳轉到該標號處並執行其後的語句。另外標號必須與goto語句同處於乙個函式中,但可以不在乙個迴圈層中。通常goto語句與if條件語句連用, 當滿足某一條件時, 程式跳到標號處執行。

goto語句通常不用,主要因為它將使程式層次不清,且不易讀,但在多層巢狀退出時, 用goto語句則比較合理。

while語句

while語句的一般形式為:

while(表示式)語句

其中表示式是迴圈條件,語句為迴圈體。

while語句的語義是:計算表示式的值,當值為真(非0)時, 執行迴圈體語句。其執行過程可用下圖表示。

【例6.2】用while語句求 。

用傳統流程圖和n-s結構流程圖表示演算法,見圖:

main()

printf("%d\n",sum);

}1) while語句中的表示式一般是關係表達或邏輯表示式,只要表示式的值為真(非0)即可繼續迴圈。

2迴圈體如包括有乙個以上的語句,則必須用{}括起來,組成復合語句。

do-while語句

do-while語句的一般形式為:

do語句

while(表示式);

這個迴圈與while迴圈的不同在於:它先執行迴圈中的語句,然後再判斷表示式是否為真, 如果為真則繼續迴圈;如果為假, 則終止迴圈。因此, do-while迴圈至少要執行一次迴圈語句。其執行過程可用下圖表示。

for語句

在c語言中,for語句使用最為靈活,它完全可以取代 while 語句。它的一般形式為:

for(表示式1;表示式2;表示式3) 語句

它的執行過程如下:

1) 先求解表示式1。

2) 求解表示式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然後執行下面第3)步;若其值為假(0),則結束迴圈,轉到第5)步。

3) 求解表示式3。

4) 轉回上面第2)步繼續執行。

5) 迴圈結束,執行for語句下面的乙個語句。

其執行過程可用下圖表示。

for語句最簡單的應用形式也是最容易理解的形式如下:

for(迴圈變數賦初值;迴圈條件;迴圈變數增量) 語句

迴圈變數賦初值總是乙個賦值語句, 它用來給迴圈控制變數賦初值; 迴圈條件是乙個關係表示式,它決定什麼時候退出迴圈;迴圈變數增量,定義迴圈控制變數每迴圈一次後 按什麼方式變化。這三個部分之間用「;」分開。

例如:for(i=1; i<=100; i++)sum=sum+i;

先給i賦初值1,判斷i是否小於等於100, 若是則執行語句,之後值增加1。再重新判斷, 直到條件為假,即i>100時,結束迴圈。

相當於:

i=1;

while(i<=100)

對於for迴圈中語句的一般形式,就是如下的while迴圈形式:

表示式1;

while(表示式2)

注意:1) for迴圈中的「表示式1(迴圈變數賦初值)」、「表示式2(迴圈條件)」和「表示式3(迴圈變數增量)」都是選擇項, 即可以預設,但「;」不能預設。

2) 省略了「表示式1(迴圈變數賦初值)」, 表示不對迴圈控制變數賦初值。

3) 省略了「表示式2(迴圈條件)」, 則不做其它處理時便成為死迴圈。

例如:for(i=1;;i++)sum=sum+i;

相當於:

i=1;

while(1)

4) 省略了「表示式3(迴圈變數增量)」, 則不對迴圈控制變數進行操作,這時可在語句體中加入修改迴圈控制變數的語句。

例如:for(i=1;i<=100;)

5) 省略了「表示式1(迴圈變數賦初值)」和「表示式3(迴圈變數增量)」。

例如:for(;i<=100;)

相當於:

while(i<=100)

6) 3個表示式都可以省略。

例如:for(;;)語句

相當於:

while(1)語句

7) 表示式1可以是設定迴圈變數的初值的賦值表示式,也可以是其他表示式。

例如:for(sum=0;i<=100;i++)sum=sum+i;

8) 表示式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;

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

例如:for(i=0;(c=getchar())!=』\n』;i+=c);

又如:for(;(c=getchar())!=』\n』;)

printf(「%c」,c);

迴圈的巢狀

幾種迴圈的比較

1) 四種迴圈都可以用來處理同乙個問題,一般可以互相代替。但一般不提倡用goto型迴圈。

2) while和do-while迴圈,迴圈體中應包括使迴圈趨於結束的語句。for語句功能最強。

3) 用while和do-while迴圈時,迴圈變數初始化的操作應在while和do-while語句之前完成,而for語句可以在表示式1中實現迴圈變數的初始化。

break和continue語句

break語句

break語句通常用在迴圈語句和開關語句中。當break用於開關語句switch中時,可使程式跳出switch而執行switch以後的語句;如果沒有break語句,則將成為乙個死迴圈而無法退出。break在switch 中的用法已在前面介紹開關語句時的例子中碰到,這裡不再舉例。

當break語句用於do-while、for、while迴圈語句中時,可使程式終止迴圈而執行迴圈後面的語句, 通常break語句總是與if語句聯在一起。即滿足條件時便跳出迴圈。

main()

if(c==27)

break; /*判斷若按esc鍵則退出迴圈*/

i++;

printf("the no. is %d\n", i);

}printf("the end");

}注意:

1) break語句對if-else的條件語句不起作用。

2) 在多層迴圈中, 乙個break語句只向外跳一層。

6.8.2 continue 語句

continue語句的作用是跳過迴圈本中剩餘的語句而強行執行下一次迴圈。continue語句只用在for、while、do-while等迴圈體中,常與if條件語句一起使用,用來加速迴圈。其執行過程可用下圖表示。

1) while(表示式1)

2) while(表示式1)

【例6.9】

main()

}6.9 程式舉例

【例6.10】用 公式求π。

n-s流程圖:

#include

main()

pi=pi*4;

printf("pi=%10.6f\n",pi);

}【例6.11】判斷m是否素數。

n-s流程圖:

#include

main()

【例6.12】求100至200間的全部素數。

#include

main()

if(n%n==0)printf(「\n」);

}printf(「\n」);

}

c語言學習心得

變數是程式可操作的儲存區的名稱。c中每個變數都有特定的型別,型別決定了變數儲存的大小和布局,該範圍內的值都可以儲存在記憶體中,運算子可應用於變數上。即告訴編譯器在何處建立變數的儲存,以及如何建立變數的儲存。變數定義指定乙個資料型別,幷包含了該型別的乙個或多個變數的列表。變數宣告向編譯器保證以指定的型...

C語言學習心得

區域性變數僅在包含它的最內的大括號內有效 for迴圈中定義的變數僅在for迴圈內有效!在main 中定義的變數,不能在被調函式中使用 除全域性變數 普通變數或指標變數間的賦值,非位址概念 不同的普通變數或不同的指標變數在記憶體中所分配的空間位址不同 兩者間傳遞的是內容 對普通變數而言 內容僅僅是具體...

c語言學習心得(3)

學習c語言已經一年多,對c也算得上半個入門者,期間也寫過一些自娛自樂的 其實個人認為無論學習什麼語言,最重要的是掌握習程式設計思想,然而c語言一種學習程式設計思想的基礎語言。所以,c語言的重要性不言而喻。一 課本 無論用的是什麼書,要學好c語言,把書上的每乙個例題 習題的 讀懂,這是學c最基本的要求...